我正在做这个简单的网站,我遇到了这个错误:
我的功能:
<?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行是返回行。
我理解语法错误意味着什么,但我确信'==='
不是问题。
答案 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。