0

我正在做这个简单的网站,我遇到了这个错误:

我的功能:

<?php 
function user_exists($username)
{
    $username = sanitize($username);
    $query = mysqli_query($connect, "SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username'");
    return (mysqli_result($query, === 0) 1) ? true : false;
}
 ?>

我的php错误日志:

PHP Parse error:  
syntax error, unexpected '===' (T_IS_IDENTICAL) in function on line 6

6号线是回线。

我了解语法错误的含义,但我很确定这'==='不是问题所在。

4

2 回答 2

1

编辑:我只是在谈论三元条件,这个答案是错误的,因为该mysqli_result()函数不存在。

我猜你正在尝试这样做:

return mysqli_result($query) === 0 ? false : true;

正如 Marcel Korpel 所说,使用准备好的语句来避免安全漏洞。

于 2013-06-21T15:38:24.863 回答
0

你在这里有几个问题。首先没有mysqli_result(),它不存在。相反,您可以获取如下所示的行。你$connect也超出了范围。您需要将它作为参数传递,并且正如评论指出的那样,即使mysqli_result()确实存在,由于语法错误,它仍然无法工作。

function user_exists($username, $connect)
{
    $output = false;
    $username = sanitize($username);
    $query = mysqli_query($connect, "SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username'");

    if($query) // check the query was successful before trying to fetch
    {
        $row = mysqli_fetch_row($query);
        $output = $row[0] > 0;
    }

    return $output;
}

我假设你sanitize()正在做mysqli_real_escape_string()。为了获得最佳安全性,请切换到Prepared Statement

于 2013-06-21T15:39:07.807 回答