Проблема в SQL-запросе из PHP - PullRequest
0 голосов
/ 17 июля 2009

У меня есть таблица qotwVote1a с полями QuestionId, MemberId, Vote1a, где QuestionId и MemberId - первичный ключ.

Я хочу выполнить запрос, чтобы выяснить, проголосовал ли участник за вопрос или нет. Если нет, я устанавливаю переменную $j на 0, если да, я устанавливаю ее на 1.

Я написал этот запрос. Но это дает мне ошибку. Может кто-то взглянуть на это? И если вы хотите спросить что-нибудь еще, дайте мне знать.

$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);

Ответы [ 2 ]

5 голосов
/ 17 июля 2009

У вас есть подзапрос

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

внутри одинарных кавычек. Удалить их:

SELECT MemberId FROM qotwVote1a WHERE QuestionId='".$questionId."' AND MemberId='".$id."' AND MemberId NOT IN (SELECT MemberId FROM qotwVote1a WHERE QuestionId='".$questionId."')
1 голос
/ 17 июля 2009

У меня есть таблица qotwVote1a с полями QuestionId, MemberId, Vote1a, где QuestionId и MemberId являются первичный ключ.

Я хочу выполнить запрос, чтобы найти участник, проголосовал за вопрос или не. Если нет, я устанавливаю переменную $ j в 0, если да, я установил его на 1.

Я бы сделал это с помощью цикла для членов и сделал бы следующий SQL-оператор для каждого члена:

// 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...