当用户名不存在时,用户名检查返回为用户名已存在


Username check comes back as username already exist when it doesnt

我有一个代码可以检查用户名是否存在,但当我运行代码并输入我使用phpmyadmin插入数据库的用户名时,它会说用户名不存在,我想知道哪里出了问题?

这是我的php代码:

<?php
require_once 'connect.php';
$conn = dbConnect();
if (isset($_POST['username'])) 
{
$sql = $conn->prepare("SELECT COUNT(id)
                               FROM users
                               WHERE username = :username");
$sql->execute(array(":username" => $_POST['username']));
$rows_number =  $sql->fetchColumn();
 if($rows_number ==0)
 {
   echo "Username doesn't exist";
   exit;
 }
else
{
  echo "Username already exists";
  exit;
}
}
?>

这是我的php-connect.hp:

<?php
function dbConnect(){
$db = null;
$db_host = "localhost";
$db_username ="user";
$db_pass ="pass";
$db_name = "accounts";
try{
$db = new PDO('mysql:host='.$db_host.';dbname'.$db_name,$db_username,$db_pass);
}
catch (PDOException $e) {
  echo '<p>Cannot connect to database !!</p>';
  exit;
}
return $db;
}
?>

由于我没有50多名代表,我无法发表评论,只能发布你的connect.php代码并排除用户名和密码,这样我就可以看看是否是connect.php导致了问题

编辑:你的问题碱液在这里:

   ';dbname'.$db_name,$db_username,$db_pass);

应该是

 ';dbname=' 

然后追加到变量$db_name上。进一步的解释是‘;dbname等于您给变量的值。

您可能没有初始化查询语句

/*创建准备好的报表*/

<?php
    $stmt =  $mysqli->stmt_init();
    if ($stmt->prepare("SELECT District FROM City WHERE Name=?")) {
    /* bind parameters for markers */
    $stmt->bind_param("s", $city);
    /* execute query */
    $stmt->execute();
    /* bind result variables */
    $stmt->bind_result($district);
    /* fetch value */
    $stmt->fetch();
    printf("%s is in district %s'n", $city, $district);
    /* close statement */
    $stmt->close();
}
   /* close connection */
    $mysqli->close();
?>