之前可能已经提出过这个问题,如果有问题我会道歉。我已经尝试了一些我的错误的解决方案,但仍然无法找到解决方案。
我的代码是:
$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("£", "£", $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)。
然而,我已经看了很久,我无法解决它:(
提前谢谢你。
答案 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();
";