我正在尝试检查名称是否存在。查询应返回0,因为该字段为空但返回1。帮助
function profile_exists($user) { //checks that profile exists
$profile_ex = mysql_query(
"SELECT COUNT(profile_name) FROM user_info WHERE id = '{$user}'");
if(!confirm_query($profile_ex)) {
return false;
} else {
if (mysql_result($profile_ex, 0) == 1) {
echo mysql_result($profile_ex, 0);
exit;
return true;
} else {
return false;
}
}
}
答案 0 :(得分:2)
你有一行而不是0行,因为COUNT(*)
返回一行数据,在这种情况下,计数的值为0。
您需要运行查询,然后检查count的值。
示例:
$result = mysql_query("SELECT COUNT(*) AS count FROM ...");
$row = mysql_fetch_assoc($result);
if( $row['count'] == 0){
return False;
}else{
return True;
}
答案 1 :(得分:1)
你的语法看起来很复杂,试试这个:
$profile_ex = mysql_query("SELECT * FROM user_info WHERE id = '$user'");
$profile_ex = mysql_num_rows($profile_ex);
if ( $profile_ex > 0 ) {
echo "exists"; } else {
echo "doesn't exist";
}
希望这有帮助
答案 2 :(得分:0)
您应该使用mysqli_
或PDO
准备语句来防止SQL注入。
它将始终返回1,因为您正在使用聚合函数(COUNT
)。请改为从表中选择一列:
SELECT profile_name FROM ...
但是,如果您只想检查配置文件是否存在,请使用mysqli_num_rows
。如果您想检查配置文件是否存在并返回数据,请使用mysqli_fetch_assoc
。