2

NOT EXISTS mysqlステートメントを機能させることができず、今は怒っています。

$ancestors = mysql_query('
    SELECT * FROM comments e
        WHERE 
            ancestors = "' . $comment["id"] . '" AND 
            user_id != "' . $user->user_object["id"] . '" AND
                NOT EXISTS
                    (
                        SELECT  null 
                        FROM    notifications d
                        WHERE   d.target_id = e.id
                    )
', $database->connection_handle);

何か案は?

エラー:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /<>/<>/functions.php on line 785
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /<>/<>/functions.php on line 785
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /<>/<>/functions.php on line 785
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /<>/<>/functions.php on line 785
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /<>/<>/functions.php on line 785
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /<>/<>/functions.php on line 785
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /<>/<>/functions.php on line 785
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /<>/<>/functions.php on line 785
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /<>/<>/functions.php on line 785

785行目:

    while($reply = mysql_fetch_array($ancestors, MYSQL_ASSOC)){

私がこれを行う場合:

$ancestors = mysql_query('SELECT * FROM ' . $database->db_prefix . 'comments 
    WHERE    
        ancestors = "' . $comment["id"] . '" AND 
        user_id != "' . $user->user_object["id"] . '"', 
        $database->connection_handle
);

それは私が期待する私の結果を返します。

通知テーブルにはエントリが含まれています

mysql var dump =

string(46) "Table 'whatever_co.comments' doesn't exist"

//解決済み:::'。$database->db_prefix。'テーブルセレクターにありませんでした。

4

3 に答える 3

0

あなたNOT EXISTSは元気です。私はそれがあなたの選択に問題があるかもしれないと思います。そのテーブルに「null」というフィールドがありますか?そうでなければ、それはあなたの問題です。

私はあなたがの線に沿って何かを探していると思います

Select * 
FROM notifications d
WHERE d.target_id = e.id
AND e.id IS NULL

そのようなものを使ってみてください。

于 2012-05-24T22:18:42.013 に答える
0

WHERE EXISTSWHERE NOT EXISTSサブクエリによって返される行の内容を見ないでください。行が返されるかどうかを確認するだけです:http://dev.mysql.com/doc/refman/5.0/en/exists-and-not-exists-subqueries.html

したがって、通常は「存在しない」ハードコードされたnullを選択している場合でも、MySQLはそのnullを調べていません。つまり、そのnullを含む行を調べて、「ねえ、それは存在します」と評価します。 。

于 2012-05-24T22:19:25.060 に答える
0

テーブルプレフィックスがありませんでした:'。$database->db_prefix。'コメントと通知から。質問の理由は、私が初めて使用したのは存在しないということでした。そして、それが間違った部分であると想定していました。いつもありがとうございます。これはお祝いの原因になります。

于 2012-05-24T22:47:27.493 に答える