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