Синтаксическая ошибка в операторе возврата
Я делаю этот простой сайт, и я столкнулся с этой ошибкой:
Моя функция:
<?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 ответа
Редактировать: я говорил только о тройном состоянии, и этот ответ неверен, потому что mysqli_result()
функция не существует
Я думаю, вы пытаетесь сделать это:
return mysqli_result($query) === 0 ? false : true;
И, как сказал Марсель Корпел, используйте готовые заявления, чтобы избежать недостатков в безопасности.
У вас есть несколько проблем здесь. Прежде всего, нет 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()
, Для лучшей безопасности переключитесь на Подготовленное Заявление.