我正在尝试查找用户名是否已存在于数据库中。出于某种原因,$ 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";
}
答案 0 :(得分: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";
}
答案 1 :(得分:1)
您使用PDO与表格连接,然后尝试使用 - 已弃用 - mysql extension进行查询。这不起作用。
坚持PDO,然后使用PDO query,你甚至可以用准备好的声明将它提升到一个新的水平。
示例:
$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()
可以帮助您了解对象的外观。你可以在那里执行你想要的任何动作。
答案 2 :(得分: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
。查看manual。
答案 3 :(得分: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';
}