使用OR列LIKE时,mysql查询失败

时间:2012-10-23 19:00:12

标签: php mysql

当我在网页中使用以下PHP时,我收到“查询失败”消息,但是如果我从查询中删除OR column2 LIKE '%$searchterm%',则可以正常工作。我已经尝试了谷歌搜索问题,并查找了一个傻瓜手册。数据库表肯定包含column_2中的搜索词。


/* send this query to MySQL database */
$query = "SELECT * FROM table WHERE column_1 LIKE '%$searchterm%' OR desc LIKE '%$searchterm%'";

/* process query results */
$result = mysqli_query($cxn,$query) or die ("query failed");
$row = mysqli_fetch_assoc($result);

extract($row);

/* create HTML for web broswer to see */
echo "Column 1 value: $column_1<br><br>";
echo "Column 2 value: $column_2<br><br>";
echo "Column 3 value: $column_3<br><br>";

2 个答案:

答案 0 :(得分:0)

解决方案!查询需要围绕OR语句左侧的对象名称进行反引号,而其他对象名称需要直接的单引号。

$query = "SELECT * FROM `table` WHERE `column_1` LIKE '%$searchterm%' OR 'column_2' LIKE '%$searchterm%'";


我在使用phpMyAdmin将查询转换为PHP代码时看到了反引号,但是必须忽略添加反斜杠的部分,如\'%$searchterm%\'中所示。所以翻译工具让我找到了解决方案,但我没有看到这些反斜杠的原因。


此外,没有OR语句的简单查询工作正常,没有反引号和最小引号,但我不明白为什么OR会调用反引号规则。

答案 1 :(得分:-1)

你可以试试这个:

$query = "SELECT * FROM table WHERE column_1 LIKE '%$searchterm%' UNION SELECT * FROM table WHERE column_2 LIKE '%$searchterm%'";