2

ユーザーが既に質問を送信したかどうかを確認する関数を実行しています。問題をクエリコードを実行する関数に絞り込みました。何らかの理由で機能していません。AND user_requester... を含む部分が存在しない場合、関数は機能します。ある種の構文エラーだと確信していますが、エラー報告から応答がありません。以下にコードを示します。

function question_exists ($question, $user_id) {

$question = sanitize($question);    

$query = mysql_query("SELECT COUNT(`primary_id`) FROM `requests` WHERE 

`question_asked`= '$question' AND `user_requester` = $user_id");

return (mysql_result($query, 0) == 1) ? true : false;

}

明確化: ユーザーが同じ質問を 2 回送信しないようにしたい。これが、クエリの where 句に AND セクションを追加する目的です。AND セクションを追加すると、すべてがバラバラになり、ユーザーはとにかく同じ質問を送信できます。

4

3 に答える 3

2

各操作の結果を個別にテストできるように、すべての手順を個別に実行してみます。リターンラインは多くのことを処理しているため、どこに問題があるのか​​ を判断するのは困難です. このようなもの...

function question_exists( $question, $user_id )
{
    $question = sanitize( $question );

    $user_id = (int) $user_id; // additional sanitization in case you didn't do it already.

    $sql = "SELECT COUNT(`primary_id`) FROM `requests` WHERE 
        `question_asked`= '$question' AND `user_requester` = $user_id";
    $result = mysql_query( $sql );
    if ( !$result ) {
       // Note: this would be better sent to an error handling function, this is just for simplicity's sake.
       echo 'Mysql query error: ' . mysql_error();
       exit;
    }

    $row = mysql_fetch_row ( $result );
    if ( $row ) {
        return true;
    } else {
        // temporary debug code
        echo "unknown error</ br>\n";
        echo "sql: " . $sql . "</ br>\n";
        echo "<pre>";
        var_dump( $row );
        echo "</pre>";
        exit();

        // real code for after problem is solved
        return false;
    }
}

これでも解決せず、まだ行っていない場合は、 $question および $user_id vars をダンプして、それらを受け取っていること、およびサニタイズ機能が何か間違ったことをしていないことを確認してください。このコードを実行していないため、構文エラーがある可能性があることに注意してください。

于 2012-07-21T06:26:30.637 に答える
1

どのような種類のエラー報告について言及していますか? クエリが失敗しても、PHP エラー/警告は発生しません。次のようなものが必要です

$query = mysql_query(...) or die(mysql_error());

実際に何が起こったのかを確認します。

于 2012-07-21T05:50:43.747 に答える
-1
$query = mysql_query("SELECT COUNT(`primary_id`) FROM `requests` WHERE 

`question_asked`= '$question' AND `user_requester` = {$user_id}");

クエリの変数に中かっこを追加します。

于 2012-07-21T05:52:43.227 に答える