我在一个数据库(my_db)中创建了3个表tbl1,tbl2和tbl3。 我的问题是如何在一次搜索中搜索这三个表中的数据?
我的代码。
<?php
include('connect-db.php');
include('sort.php');
$Search = isset($_GET['Search']) ? '%'.$_GET['Search' ].'%' : '' ;
$result = mysql_query("SELECT * FROM tbl1, tbl2, tbl3 where name like '$Sea'");
?>
答案 0 :(得分:1)
Joins。例如,用户可以具有发布的简档和文档列表。这将输出每个表作为结果中的附加列。
SELECT * FROM tbl1
JOIN tbl2 ON tbl1.id=tbl2.id
JOIN tbl3 ON tbl1.id=tbl3.id
WHERE tbl1.name LIKE '$Sea'
如果要将每个表添加为结果中的额外行,则可以使用union。您需要在所有表中构建相同的结果才能使其正常工作。因此,当您的表格结构非常相似时,工会效果最佳。请记住,union将从两个集合中删除重复的条目。如果你可以保证两个集合是不同的,或者你不关心重复,那么union all
会表现得更好,特别是当你的结果集变大时。
SELECT * FROM tbl1 WHERE tbl1.name LIKE '$Sea'
UNION SELECT * FROM tbl2 WHERE tbl2.name LIKE '$Sea'
UNION SELECT * FROM tbl3 WHERE tbl3.name LIKE '$Sea'
更新: 此外,正如其他人所提到的,您正在使用已弃用的mysql函数。以下是连接和使用MYSQL的更好方法示例:
<?php
/* Connect to an ODBC database using PDO (which is more secure than the
older mysql libraries because it supports query parameters). */
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';
try {
$conn = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
// Query example
$sql = 'SELECT * FROM table_name';
foreach($conn->query($sql) as $row) {
echo $row['id'].', '.$row['anotherfield'].'<br>';
}
答案 1 :(得分:0)
基本上你需要实现JOINS,同时查询数据库,使用JOINS表必须在它们之间有某种关系。
因此,一旦在查询中使用JOINS,您就可以轻松获得结果。