这是我的代码:
$result_username = mysqli_query($dbconnection, Data::checkForUsername($username));
然后是这里:
public static function checkForUsername($username) {
global $database;
$query = "
SELECT COUNT(*)
FROM users
WHERE username='{$username}';";
$result = $database -> query($query);
return $result;
}
然后$result执行以下操作:
if (mysqli_result($result_username, 0) > 0) {
但是,它会给我一个资源Id?我不明白为什么?
我只是想检查用户名是否存在于至少1行中。
最佳答案
执行查询后需要获取数据
$row = $result->fetch_array(MYSQLI_NUM);
return $row[0];
更新:现在,使用prepared语句,您的函数可以如下所示:
public static function checkForUsername($username) {
global $database;
$result = 0;
$query = "SELECT COUNT(*) FROM users WHERE username=?";
/* create a prepared statement */
if ($stmt = $database->prepare($query)) {
/* bind parameters for markers */
$stmt->bind_param("s", $username);
/* execute query */
$stmt->execute();
/* bind result variable */
$stmt->bind_result($result);
/* fetch value */
$stmt->fetch();
/* close statement */
$stmt->close();
}
return $result;
}
关于php - 尝试从SQL返回true或false,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14906479/