1

これが私のステートメントの外観です。

               $stmt = $this->db->prepare("
                        select q.id 
                        from questions q 
                        left outer join (
                        select max(chk_date) as questions_last_chk_date 
                        FROM last_check_date 
                        where user_id = ? 
                        AND chk_token=?) lcd 
                        on q.add_dt > lcd.questions_last_chk_date
                        WHERE q.author_id<>?
                ") or die($this->db->error);
                $stmt->bind_param("isi", $_SESSION["userID"], "q", $_SESSION["userID"]) or die($stmt->error);

2つの質問があります

1) エラーメッセージの取得

致命的なエラー: パラメータ 3 を参照渡しできません

なぜこのエラーが発生するのですか? ところで、テーブルが空であることは知っていlast_check_dateますが、この問題とは関係ないと思います。

2) Windows では、取得エラー メッセージ テーブルlast_check_dateは存在しませんが、タイプミスがなく、テーブルが存在することは 100% わかっています。Navicat - db amanger アプリケーションで同じクエリを試したところ、結果が得られました。しかし、PHPを試してみると、このエラーが発生します。リモート Linux サーバーでは動作し、質問 1 のエラー メッセージが表示されます。失敗!どうすればその問題を解決できますか?

4

1 に答える 1

3

q変数に入れる必要があります。

参考までに、テーブルのエイリアスまたは参照に等しい文字列値を使用しないようにしてください。エイリアスqを持つテーブルがある場合、値を渡しています。qこれはエラーではありませんが、クエリのエコーを行う必要がある場合、非常に混乱する可能性があります。

于 2012-06-04T18:32:45.687 に答える