Подтвердить что ты не робот

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

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

Моя функция:

<?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 - это обратная линия.

Я понимаю, что означает синтаксическая ошибка, но я уверен, что '===' не проблема.

4b9b3361

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