删除周围(title LIKE '%$Search%' OR keywords LIKE '%$Search%')
那些一般用于子查询的括号内。
$query = mysql_query("
SELECT * FROM pictures
WHERE title LIKE '%$Search%'
OR keywords LIKE '%$Search%'
AND approved = 'YES'
ORDER BY title ASC
");
这里是一个子查询的一个例子,以及从手动拉动上MySQL.com:
SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);
编辑:
或尝试不同的引述方法:
$query = mysql_query("
SELECT * FROM pictures
WHERE title LIKE '".%$Search%."'
OR keywords LIKE '".%$Search%."'
AND approved = 'YES'
ORDER BY title ASC
");
您也可以尝试转义您的数据:
$Search = mysql_real_escape_string($Search);
作为示例。我不知道你是如何分配这个变量的。
phpMyAdmin的测试编辑:
这是我里面phpMyAdmin的使用:
SELECT * FROM table
WHERE col1 LIKE '%pizza%'
OR col2 LIKE '%pizza%'
AND col3 = 'YES'
ORDER BY col1 ASC
使用pizza
作为搜索关键字眼看$Search
将根据你相同的关键字,其中一列中包含“大披萨”,另一列中包含“比萨,带走餐馆”。
- 请记住,无论您使用/分配
$Search
,必须驻留在所有查询的列中。
您可能还希望利用explode()
。
这里是https://stackoverflow.com/a/15289777/
<?php
$search = 'Gold Chain Shirt';
$bits = explode(' ', $search);
$sql = "SELECT name FROM product WHERE name LIKE '%" . implode("%' OR name LIKE '%", $bits) . "%'";
拉到上面会产生此查询的例子:
SELECT name FROM product WHERE name LIKE '%Gold%' OR name LIKE '%Chain%' OR name LIKE '%Shirt%'
尝试围绕去掉括号'(标题LIKE“%$搜索%” OR LIKE“%$搜寻%”的关键字)'那些一般用于子查询。 –
谢谢Fred -ii,你的回答比我的屏幕刷新率还快!我会立即尝试你的建议。不,没有解决 - 结果保持不变。 “OR”没有被读取。 –
不客气。为了更好地说明,我已经发布了一个答案,包括一个子查询的例子,如果你想研究一下。 –