Синтаксическая ошибка в операторе возврата

Я делаю этот простой сайт, и я столкнулся с этой ошибкой:

Моя функция:

<?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(), Для лучшей безопасности переключитесь на Подготовленное Заявление.

Другие вопросы по тегам