我正在构建php搜索框,这是我的查询
SELECT * FROM table1, table2 WHERE table1.title AND table2.posts LIKE '$query%' LIMIT 10
查询后代码是
if($query) {
while ($result = $query ->fetch_object()) {
echo '<li onClick="window.open(\''.$result->guid.'\');">'.$result->post_title.'</li><br>';
}
} else {
echo 'ERROR: There was a problem with the query.';
}
它不会取任何东西。我认为这是来自查询的东西。 请帮忙..
答案 0 :(得分:3)
将您的查询更改为:
SELECT * FROM table1, table2 WHERE table1.title LIKE '$query%'
AND table2.posts LIKE '$query%' LIMIT 10
答案 1 :(得分:2)
你不能像你想要的那样加入条件,每个结社都需要拥有它自己的陈述
SELECT * FROM table1, table2 WHERE table1.title LIKE '$query%' AND table2.posts LIKE '$query%' LIMIT 10
答案 2 :(得分:1)
$result = $query->query("SELECT * FROM `table1` AS `t1` JOIN `table2` AS `t2` ON `t1`.`id` = `t2`.`t1id` WHERE `t1`.`title` LIKE '%" . $query . "%' AND `t2`.`posts` LIKE '%" . $query . "%' LIMIT 10;");
if($result ) {
while ($result = $query->fetch_object()) {
echo '<li onClick="window.open(\'' . $result->guid . '\');">' . $result->post_title . '</li><br>';
}
}
else
echo 'ERROR: There was a problem with the query.';
我认为它看起来应该是这样的。
你应该使用join并有一个字段来连接这两个表:t1
。id
= t2
。t1id
如果您愿意,可以使用table1
,table2
,但最好还是使用JOIN。
使用LIKE时需要注意的一点是,最好在之前和之后使用%:LIKE '%" . $query . "%
答案 3 :(得分:0)
改变:
SELECT * FROM table1, table2 WHERE table1.title AND table2.posts LIKE '$query%' LIMIT 10
为:
SELECT * FROM table1, table2 WHERE table1.title LIKE '$query%' AND table2.posts LIKE '$query%' LIMIT 10
或任何你想要标题的变量
答案 4 :(得分:0)
Suhail Patel可能是正确但不完整。
取决于您的表格定义 SELECT * FROM table1,table2 WHERE table1.name LIKE x AND table2.name LIKE y;
将返回从每个表中选择的字段的所有可能组合。因此,如果table1包含满足LIKE的以下行:
1
2
3
和table2包含满足LIKE的这些行:
6
7
8
然后你的结果将包含3x3 = 9个答案:
1, 6
1, 7
1, 8
2, 6
2, 7
2, 8
3, 6
3, 7
3, 8
要避免这种情况,您必须定义两个表之间的关系。例如:
SELECT * FROM table1, table2 WHERE table1.name LIKE x AND table2.name LIKE y AND table1.type = table2.id;
这也可以重写为JOIN语句。有关联接的更多信息,此链接应该有所帮助: http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html