2009-07-17 2 views
0

Ich habe eine Tabelle qotwVote1a mit Feldern QuestionId, MemberId, Vote1a, wo QuestionId und MemberId sind der Primärschlüssel.Problem in SQL-Abfrage von PHP

Ich möchte eine Abfrage ausführen, um zu finden, dass ein Mitglied für eine Frage abgestimmt hat oder nicht. Wenn nicht, setze ich die Variable $j auf 0, wenn ja, setze ich sie auf 1.

Ich schrieb diese Abfrage. Aber es gibt mir einen Fehler. Kann jemand es sich ansehen? Und wenn Sie noch etwas fragen wollen, lassen Sie es mich wissen.

$questionId=57; 
$id="zee"; 
$result2 = mysql_query(" 
      SELECT MemberId 
      FROM qotwVote1a 
      WHERE QuestionId='".$questionId."' 
      AND MemberId='".$id."' 
      AND MemberId NOT IN (' 
       SELECT MemberId 
       FROM qotwVote1a 
       WHERE QuestionId='".$questionId."' 
      ') 
      ");//WHERE QuestionId='".$questionId."' 
$j=0; 
echo $result2; 
while($row2 = mysql_fetch_array($result2)) 
{ 
    echo $row2['Vote1a']." ".$row2['QuestionId']." ".$row2['MemberId']; echo "<br/>"; 
    $j=1; 
} 
echo($j); 
+1

Kann jemand diesen Code bitte neu formatieren? Habe den Rep noch nicht. –

+0

@ Brian: Fertig. – Welbog

Antwort

1

Ich habe eine Tabelle qotwVote1a mit Feldern QuestionID, MemberID, Vote1a wo QuestionID und MemberID sind die Primärschlüssel.

Ich möchte eine Abfrage ausführen, um zu finden, dass ein Mitglied für eine Frage oder nicht gewählt hat. Wenn nicht, habe ich die Variable $ j 0, wenn ja ich es auf 1.

Ich würde tun dies mit einer Schleife über die Mitglieder und führen Sie die folgende SQL-Anweisung für jedes Mitglied:

// assuming to loop over all Members. 
$j = 0; 

$sql = 'SELECT MemberId' 
    . ' FROM qotwVote1a' 
    . ' WHERE QuestionId=' . $questionId . ' 
    . ' AND MemberId=' . $id . ' 
    . ' LIMIT 1;'; // returns max. 1 row if found else FALSE. 

$result2 = mysql_query($sql); 
if (FALSE !== ($row2 = mysql_fetch_array($result2))) { 
    $j = 1; 
} 
5

Sie haben die Unterabfrage

(' SELECT MemberId FROM qotwVote1a WHERE QuestionId='".$questionId."' ') 

in einfache Anführungszeichen. Entfernen Sie sie:

SELECT MemberId FROM qotwVote1a WHERE QuestionId='".$questionId."' AND MemberId='".$id."' AND MemberId NOT IN (SELECT MemberId FROM qotwVote1a WHERE QuestionId='".$questionId."')