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