Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查db prepared语句中是否已存在用户名_Php_Mysql_Mysqli - Fatal编程技术网

Php 检查db prepared语句中是否已存在用户名

Php 检查db prepared语句中是否已存在用户名,php,mysql,mysqli,Php,Mysql,Mysqli,我正在尝试检查我的数据库中是否已经存在已发布的用户名。我不确定我会错在哪里。以下其他条件正常工作。当我提交表单时,即使我的数据库中不存在这样的名称,我也会收到“Username take”。任何帮助都将不胜感激。谢谢 $username = $_POST['username']; $stmt = $mysqli->prepare('SELECT COUNT(*) FROM users WHERE username = ?'); $stmt->bind_param('s', $u

我正在尝试检查我的数据库中是否已经存在已发布的用户名。我不确定我会错在哪里。以下其他条件正常工作。当我提交表单时,即使我的数据库中不存在这样的名称,我也会收到“Username take”。任何帮助都将不胜感激。谢谢

$username = $_POST['username'];

 $stmt = $mysqli->prepare('SELECT COUNT(*) FROM users WHERE username = ?');

$stmt->bind_param('s', $username);

$stmt->execute();

$stmt->store_result();

 if(isset($_POST["submit"]))
 {

      if(empty($_POST["username"]))
      {
          echo '<script>alert("Username field empty")</script>';

     } else if(empty($_POST["password"])) {
          echo '<script>alert("Password field empty")</script>';

     } else if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
          echo '<script>alert("Incorrect email format")</script>';

     } else if($stmt->num_rows > 0) {
     echo '<script>alert("Username taken")</script>';
$username=$\u POST['username'];
$stmt=$mysqli->prepare('SELECT COUNT(*)FROM username=?'的用户);
$stmt->bind_参数($s',$username);
$stmt->execute();
$stmt->store_result();
如果(isset($_POST[“提交”]))
{
如果(空($_POST[“username”]))
{
回显“警报”(“用户名字段为空”);
}else if(空($_POST[“password”])){
回显“警报”(“密码字段为空”);
}如果(!filter_var($email,filter_VALIDATE_email)){
回显“警报”(“不正确的电子邮件格式”);
}else if($stmt->num_rows>0){
回显“警报”(“获取用户名”);

selec count(*)…
始终返回1条记录和计数。因此,当您选中
else if($stmt->num_rows>0)时< /代码>,它总是返回true。应该检查由计数返回的值,而不是记录的数量。

谢谢,它工作了!没有意识到计数总是返回1记录。如果这解决了您的问题,请考虑标记是回答-