-6

我正在尝试查找用户名是否已在数据库中。出于某种原因,$result 返回 false,我不知道为什么。我可以很好地将东西放入数据库。如果这很重要,我会使用 Fugu 将我的代码上传到服务器。我是 php 的新手,所以任何帮助都会很棒!

以下是查询失败的代码:

$dbh = new PDO('mysql:host=localhost;dbname=baseuser' . $db_users_database, $db_user, $db_pass);
    $result = mysql_query("SELECT COUNT(username) FROM users WHERE username='$username' GROUP BY username");
                $num_rows = mysql_num_rows($result);

                if ($num_rows != 0) {
                  echo "username taken";
                }
4

4 回答 4

2

PDO像这样使用,PDO而且mysql_*功能不能一起使用,你必须单独使用它们

$sth = $dbh->prepare('SELECT COUNT(username) FROM users 
WHERE username= :username GROUP BY username');
$sth->bindParam(':username', $username, PDO::PARAM_STR);
$sth->execute();

if ($sth->fetchColumn() > 0) {
   echo "username taken";
}
于 2013-04-25T06:23:19.167 回答
1

您正在使用PDO连接到您的表,然后您尝试使用 -deprecated- mysql 扩展名进行查询。这行不通。

坚持PDO,然后使用 PDO 进行查询,您甚至可以使用准备好的语句将其提升到一个新的水平。

例子:

$dbh = new PDO('seeyourcode');
$sql = "SELECT COUNT(username) 
        FROM users 
        WHERE username= :user 
        GROUP BY username";

// Prepare the statement
$sth = $dbh->prepare($sql);
$sth->bindParam(':user', $username, PDO::PARAM_STR);

// now execute
$sth->execute();

// fetch the result
$result = $sth->fetchAll();
var_dump($result);

var_dump()只是为了让您了解对象的外观。您可以在那里执行任何您想要的操作并获得结果。

于 2013-04-25T06:28:41.843 回答
1

用这个:

$stmt = $dbh->prepare('SELECT EXISTS(SELECT * FROM `users` WHERE `username` LIKE :username) as `taken`');
$stmt->bindParam(':username', $username, PDO::PARAM_STR);
$stmt->execute();

$result = $stmt->fetch(PDO::FETCH_ASSOC);

if($result['taken']){
    echo "username taken";
}

$stmt = null;

另外,您错误地使用了PDO. 检查手册

于 2013-04-25T06:31:34.737 回答
1

不要让它变得复杂。使用简单的连接方法并使用如下查询:

$check_if_already = mysql_query("SELECT * FROM uxxx where id = 1113");

$count_total_rows = mysql_num_rows($check_if_already);
echo $count_total_rows;

    if ($count_total_rows > 0) {
       echo "Not duplicate";
       //do your task here
    } else {
        echo 'Duplicate';
    }
于 2013-04-25T06:36:47.503 回答