0

当我在网页中使用 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>";
4

2 回答 2

0

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

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


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


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

于 2012-10-24T06:19:40.847 回答
-1

你可以试试这个:

$query = "SELECT * FROM table WHERE column_1 LIKE '%$searchterm%' UNION SELECT * FROM table WHERE column_2 LIKE '%$searchterm%'";
于 2012-10-23T19:24:18.043 回答