当两列共享相同的LIKE语句时,为什么此SQL语句失败?

时间:2012-04-28 23:19:07

标签: php sql web

<?php
$search_input = $_POST["search_input"];

include_once("connection_to_db.php");

if(!isset($search_input))
{
    print("Nothing to search !");
    return;
}

//Queries products where the search input is similiar to the title, artist or format of a product
$query_search = "SELECT * FROM waxItem WHERE title OR artist LIKE  '%".$search_input."%'";

$query_search_result = mysql_query($query_search)
 or die(mysql_error());

$num_rows_search = mysql_num_rows($query_search_result);

?>        

当我添加“OR artist”时,上面的代码不起作用。

当只有一个字段与数据库记录进行比较时,代码确实有效并显示搜索结果。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

每个字段需要一个关系。

$query_search = "SELECT * FROM waxItem WHERE title LIKE '%".$search_input."%' OR artist LIKE '%".$search_input."%'";

答案 1 :(得分:1)

您无法为多个字段声明相同的LIKE条件。您必须为每个字段指定它。即使您可以这样做,但由于SQL注入攻击,这绝对不是推荐的方法。请阅读此SQL Injection

你必须改变

    $query_search = "SELECT * FROM waxItem WHERE title OR artist 
LIKE  '%".$search_input."%'";

        $query_search = "SELECT * FROM waxItem WHERE title 
LIKE '%".$search_input."%' OR artist LIKE  '%".$search_input."%'";