用户名检查返回,因为用户名已经存在

时间:2013-12-09 21:32:50

标签: php mysql pdo

我有一个代码,用于检查用户名是否存在,但是当我运行代码并输入我使用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;
}

?>

2 个答案:

答案 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();
?>