0

私はこの単純なウェブサイトをやっていますが、このエラーに遭遇しました:

私の機能:

<?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行目は帰りの行です。

構文エラーの意味は理解していますが、それが'==='問題ではないことは確かです。

4

2 に答える 2

1

編集:私は三項条件についてのみ話していましたが、mysqli_result()関数が存在しないため、この答えは偽です。

私はあなたがこれをやろうとしていると思います:

return mysqli_result($query) === 0 ? false : true;

Marcel Korpel が言ったように、準備されたステートメントを使用して、セキュリティ上の欠陥を回避してください。

于 2013-06-21T15:38:24.863 に答える
0

ここでいくつかの問題があります。まず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()最高のセキュリティを確保するには、 Prepared Statementに切り替えてください。

于 2013-06-21T15:39:07.807 に答える