php-mysql选择不工作


php mysql select like not working

我正在尝试使用一些"赞"来查询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))
{
  1. 您的数组引用操作不正确$row['color_base1']与$row[color_base1]不同
  2. 您的代码从搜索结果(第一行)中获取一个数组,并将其与0进行比较。我相信你的意思是检查返回的结果的数量,如果没有,那么检查建议
  3. 如果执行了第二个查询,它对结果没有任何作用
  4. 当您处理结果以产生输出时,您将从第2行开始循环结果(参见第2点)

调试:

  1. 如果执行$sql="…";然后您可以通过回显$sql进行调试,然后通过将结果放入phpmyadmin手动检查结果

  2. 做很多回应"我在排队:"。__第__行;以检查您的逻辑进入的路径。

  3. 将phpmyadmin结果与var_dump($row)进行比较;在循环中查看是否跳过行。

  4. mysql_query($sql)或die(mysql_error());//如果您的查询不好,将停止

等等。。。。。