2016-08-21 8 views
-2

Ich habe eine Abfragewo nicht existiert gU

SELECT * 
FROM `user` 
WHERE NOT 
EXISTS (

SELECT * 
FROM roleInEvent 
WHERE user.userId = roleInEvent.userId 
AND eventId = 1 
) 
AND user.disciplineId =5 

Jedes Mal, wenn ich diese laufen in meiner mysql-Konsole gibt es 1 Zeile. Das ist richtig. Allerdings in meinem PHP-Skript gibt es null Zeilen, während es genau die gleiche Abfrage ist.

Mein PHP-Skript sieht wie folgt aus:

$db = DatabaseHelper::get(); 
    $st = $db->prepare('SELECT * 
         FROM `user` 
         WHERE NOT 
         EXISTS (

         SELECT * 
         FROM roleInEvent 
         WHERE user.userId = roleInEvent.userId 
         AND eventId = 1 
         ) 
         AND user.disciplineId =5'); 
    $st->execute(); 

    if ($st->errorCode() !== \PDO::ERR_NONE) { 
     return null; 
    } 

Jemand weiß, was das Problem hier?

+6

zurückgeben Wie wissen Sie, dass es null Zeilen zurückgibt? In dem von Ihnen geposteten Code versuchen Sie nicht einmal, die Ergebnisse der Abfrage zu erhalten. – Asaph

+2

Sobald eine Abfrage ausgeführt wird, müssen Sie die Ergebnismenge mit einer Art Fetch [Hier ist das Handbuch, wählen Sie eins] (http://php.net/manual/en/pdostatement.fetch.php) – RiggsFolly

+0

Wow. Du hast mir sehr geholfen ... Ich habe es zurückgebracht ... Es muss ein Echo für mein Javascript sein –

Antwort

0

Die Lösung war einfach. Ich habe vergessen, die Ergebnisse zu meinem Javascript

-1

können Sie verwenden auch die IN mit einem NOT wie:

SELECT * FROM user WHERE id_user NOT IN (SELECT other_data FROM roleInEvent WHERE user.userId = roleInEvent.userId AND eventId = 1) AND user.disciplineId =5 

Wenn die Abfrage: SELECT other_data FROM roleInEvent WHERE user.userId = roleInEvent.userId AND eventId = 1 etwas zu Ihnen bringen, dieses Ergebnis müssen nicht in der user Tabelle vorhanden sind.

Ein anderes Beispiel ist:

Benutzer Tabelle:

--------------------------- 
id_user | name_user 
1   fernando 
2   urban 

Und in anderer Tabelle haben wir den Block Benutzer:

Block-Benutzer:


id_user_block | id_user | name_user 
1    1   fernando 
2    2   john lennon 

So , ich will nur uns zu mir bringen ers, die im Block Benutzer-Tabelle existiert nicht:

SELECT * FROM Users WHERE id_user NOT IN (SELECT id_user FROM blocked_users) 

So, die letzte Abfrage bekommen wir:

Die Abfrage wird

id_user | name_user 
2   john lennon 

Grüße!