尝试从SQL返回true或false

尝试从SQL返回true或false

这是我的代码:

$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/

10-10 13:57