我正在尝试使用一些"赞"来查询mysql表。但它根本不起作用。
这是我的代码:
$color_base1 = $row[color_base1];
$color_base2 = $row[color_base2];
$result2 = mysql_query("SELECT * FROM item_descr WHERE (color_base1 LIKE
'%$color_base1%' OR color_base2 LIKE '%$color_base1%' OR color_base1
LIKE '%$color_base2%' OR color_base2 LIKE '%$color_base2%')
AND id_item != $itemId");
if (mysql_fetch_array($result2) == 0)
{
$result2 = mysql_query("SELECT * FROM item_descr WHERE (keywords LIKE
'%$keywords%') AND id_item != $itemId LIMIT 3");
}
else
{
$row2 = mysql_fetch_array($result2);
echo "<div class='similarTitle'>YOU MAY ALSO LIKE</div>";
while ($row2 = mysql_fetch_array($result2))
{
echo "<div class='similarItems'>";
echo "<img class='similarImage' src='images/{$row2[thumb1]}.jpg'>";
echo "<div class='similarItemsText'>".$row2[name]."</div></div>";
}
}
谢谢!
尝试将查询更改为以下内容:
查询1:
SELECT *
FROM item_descr
WHERE (color_base1 LIKE CONCAT('%' , $color_base1, '%') OR
color_base2 LIKE CONCAT('%' , $color_base1, '%') OR
color_base1 LIKE CONCAT('%' , $color_base2, '%') OR
color_base2 LIKE CONCAT('%' , $color_base2, '%')) AND
id_item != $itemId
查询2:
SELECT *
FROM item_descr
WHERE keywords LIKE CONCAT('%' , $keywords, '%') AND
id_item != $itemId
LIMIT 3
尝试在查询中转义变量
mysql_query("select ... like '%" . $var . "%' ...");
$color_base1 = $row['color_base1']; // <- index NOT constant
$color_base2 = $row['color_base2'];
$result2 = mysql_query("SELECT * FROM item_descr WHERE (color_base1 LIKE '%$color_base1%' OR color_base2 LIKE '%$color_base1%' OR color_base1 LIKE '%$color_base2%' OR color_base2 LIKE '%$color_base2%') AND id_item != $itemId");
if(mysql_num_rows($result2) == 0) // <- check for NO RESULTS
{
$result2 = mysql_query("SELECT * FROM item_descr WHERE (keywords LIKE '%$keywords%') AND id_item != $itemId LIMIT 3");
}
$row2 = mysql_fetch_array($result2);
echo "<div class='similarTitle'>YOU MAY ALSO LIKE</div>";
while ($row2 = mysql_fetch_array($result2))
{
- 您的数组引用操作不正确$row['color_base1']与$row[color_base1]不同
- 您的代码从搜索结果(第一行)中获取一个数组,并将其与0进行比较。我相信你的意思是检查返回的结果的数量,如果没有,那么检查建议
- 如果执行了第二个查询,它对结果没有任何作用
- 当您处理结果以产生输出时,您将从第2行开始循环结果(参见第2点)
调试:
如果执行$sql="…";然后您可以通过回显$sql进行调试,然后通过将结果放入phpmyadmin手动检查结果
做很多回应"我在排队:"。__第__行;以检查您的逻辑进入的路径。
将phpmyadmin结果与var_dump($row)进行比较;在循环中查看是否跳过行。
mysql_query($sql)或die(mysql_error());//如果您的查询不好,将停止
等等。。。。。