PHP中的SQL - 需要另一组眼睛

时间:2013-12-19 20:50:48

标签: php mysql sql

之前可能已经提出过这个问题,如果有问题我会道歉。我已经尝试了一些我的错误的解决方案,但仍然无法找到解决方案。

我的代码是:

$sql = "SELECT S.ID, S.sentence "
   . "FROM   word I, word2category C, sentence S "
   . "WHERE  C.category_ID = 10 "
   . "AND    I.ID = C.word_ID "
   . "AND    S.word_ID = I.ID "
   . "AND    S.ID NOT IN (SELECT sentence_ID FROM annotation WHERE IP = '" . $ip . "')"
   . "ORDER BY RAND()";

   $res = mysql_query($sql);
   $row = mysql_fetch_array($res);
   $ID = $row["S.ID"];
   echo "<input type='hidden' name='ID' value='$ID'/>\n";  // --- get sentence ID to     store an annotation later on

   $sentence = $row["S.sentence"];
   // $sentence = str_replace("£", "&pound;", $sentence);

我正在尝试检索句子表中具有ID并且是另一个表(category_id)中类别的一部分的随机句子。

我收到此错误:

 mysql_fetch_array() expects parameter 1 to be resource, boolean given

我认为这是因为$ sql查询失败(或返回0行)。这会导致$ res变为null / false,如果$ res为null / false,则“mysql_fetch_array()”将返回该错误。 实际上,错误是说它期望$ res是一个mysql结果,但它实际上是一个布尔值(false)。

然而,我已经看了很久,我无法解决它:(

提前谢谢你。

1 个答案:

答案 0 :(得分:1)

你的PHP有一点错误(除了使用弃用的方法)但我不是最有资格解决这个问题,所以我只会坚持查询......

$sql = "
SELECT s.ID
     , s.sentence 
  FROM word i
  JOIN word2category c
    ON c.word_ID = i.ID 
  JOIN sentence s 
    ON s.word_ID = i.ID
  LEFT
  JOIN annotation a
    ON a.sentence_id = s.ID
   AND a.ip = '$ip'
 WHERE c.category_ID = 10 
   AND a.sentence_id IS NULL
 ORDER 
    BY RAND();
";