return语句的语法错误

时间:2013-06-21 15:33:32

标签: php mysql function syntax-error

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

我的功能:

<?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行是返回行。

我理解语法错误意味着什么,但我确信'==='不是问题。

2 个答案:

答案 0 :(得分:1)

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

我猜你是想这样做的:

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

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

答案 1 :(得分: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