如何在整个数据库中搜索数据

时间:2014-03-05 11:25:01

标签: php mysql

我在一个数据库(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'");

?>  

2 个答案:

答案 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,您就可以轻松获得结果。