返回语句的语法错误
我正在做这个简单的网站,我遇到了这个错误:
我的功能:
<?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行是返回线。
我明白语法错误意味着什么,但我确定'==='
不是问题。
编辑:我只是在谈论三元条件,这个答案是错误的,因为mysqli_result()
函数不存在。
我想你正在尝试这样做:
return mysqli_result($query) === 0 ? false : true;
正如Marcel Korpel所说,使用准备好的语句来避免安全漏洞。
这里有几个问题。 首先没有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()
。 为了获得最佳安全性,请切换到准备好的声明。