我有一个代码,用于检查用户名是否存在,但是当我运行代码并输入我使用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.php:
<?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;
}
?>
答案 0 :(得分:0)
因为我没有50多个代表我无法发表评论但发布你的connect.php代码并排除了用户名和密码,所以我可以看看它是否提供了问题的connect.php
编辑:你的问题就在这里:
';dbname'.$db_name,$db_username,$db_pass);
应该是
';dbname='
然后追加你的变量$ db_name。进一步的解释是'; dbname等于你赋予变量的值。
答案 1 :(得分:-2)
您可能没有初始化查询语句
/ *创建一个准备好的声明* /
<?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();
?>