显示类似文章的链接

时间:2014-01-31 17:09:03

标签: php arrays database mysqli

我有一个页面,我想要显示您正在阅读的文章(从同一子类别中随机选择的文章)。我想使用PHP脚本,但服务器说我有错误。这是我的剧本:

$article = mysqli_query($con,"SELECT * FROM sources WHERE ID = '$ID'");
while($row = mysqli_fetch_array($article))
{     
code which works perfectly
$samecat = $row['Subcategory'];
}

$samecats = explode(', ', $samecat);
  foreach($samecats as $similar){
      $scat[] = "Subcategory LIKE %".$similar."%";
  }
  echo implode(' OR ',$scat);
$samearticle = mysqli_query($con,
"SELECT * 
FROM sources 
WHERE (".implode(' OR ',$scat).") 
AND NOT ID='$ID' 
ORDER BY Rand() 
LIMIT 0,3 ");
while($row2 = mysqli_fetch_array($samearticle))
 {
 echo "<a href='article.php?ID=".$row2['ID']."'>&raquo "
     .$row2['Headline']."</a>";
 }

连接完美,因为它可以与其他组件一起使用,但我有错误:((

任何替代解决方案都可以,但我认为这种方式更好。

错误是:

  

警告:mysqli_fetch_array()期望参数1为mysqli_result

1 个答案:

答案 0 :(得分:0)

这是你的问题:

https://eval.in/96729

我模拟了你的代码并查看了你正在生成的sql。就像这样:

"SELECT * 
FROM sources 
WHERE (Subcategory LIKE %test% OR Subcategory LIKE %foo% OR Subcategory LIKE %bar% OR Subcategory LIKE %baz%) 
AND NOT ID='' 
ORDER BY Rand() 
LIMIT 0,3 "

您需要围绕以下条款进行单引号:

Subcategory LIKE '%test%' 

所以你需要:

$scat[] = "Subcategory LIKE '%".$similar."%'";

你真的应该enable error reporting for your querying