从多个表中搜索数据

时间:2014-01-20 06:51:00

标签: php mysql

我有2张桌子

表-1 - user

user(ID.Name,Class) 

表-2 - Category

Category(ID,user_id,cat_id)

如果用户从文本字段输入数据,那么如何从两个表中搜索数据

2 个答案:

答案 0 :(得分:0)

只需查询两个表,并在

中使用“OR”运算符作为要搜索的列
 SELECT * from user, category WHERE user.id=[text field] or category.user_id=[text field] or category.cat_id=[text field] 

PHP示例:(假设您使用的是MySQL数据库 - 您还需要在php.ini文件中启用mysqli)

$mysqli = mysqli_connect(HOSTNAME, USERNAME, PASSWORD, DATABASE);
if (mysqli_connect_errno($mysqli)) {throw new exception("Failed to connect to MySQL: " . mysqli_connect_error());}


$sql = " SELECT * from user, category WHERE user.id='".$text_field."' or category.user_id='".$text_field."' or category.cat_id='".$text_field."'";
$rows = $result->fetch_array(MYSQLI_ASSOC);
foreach($rows as $row){ 

  print_r($row);
}

这应该获取记录并显示数组的响应。

答案 1 :(得分:0)

我希望你已经添加了主键和&这些表的外键关系,为了从两个表中获取数据,你有两种方式,要么两个表的乘法和引入所有数据,否则使用JOIN以有效的方式做同样的事情

希望将您的表架构设为 USER [table]有id,username,name,password CATEGORY [table]有id,name,description,user_id

因此查询将变为

SELECT U.*, C.id as cat_id, C.name as cat_name, C.description as cat_desc
FROM USER U 
JOIN CATEGORY C ON C.user_id = U.id

如果您有用户从输入字段输入数据,这将成为要在上面的查询中添加的过滤器查询,假设用户输入类别名称并希望结果集相同,则上面的查询将添加WHERE子句如下

WHERE C.name LIKE '%{INPUT FIELD CONTENT HERE}%'

我上面使用LIKE子句允许我们进行PARTIAL搜索

希望这有助于你