使用搜索关键字获取两个表

时间:2018-03-27 12:04:20

标签: php mysql sql

我有两个表'电影'和'系列'我想用这个关键字在同一时间在这两个表中获取

所以我尝试这样做但是我得到了一个SQL错误

$query = $_GET['keyword'];
$query = htmlspecialchars($query);
$stmt = "SELECT series.title, series.pic FROM series UNION SELECT mov_title, mov_pic FROM movies WHERE mov_title LIKE '%$query%' OR title LIKE '%$query%' ";
$result = $pdo->query($stmt);

4 个答案:

答案 0 :(得分:1)

将您的UNION包裹在派生表中:

select * from
(
    SELECT series.title as mov_title, series.pic FROM series
    UNION
    SELECT mov_title, mov_pic FROM movies
) dt
WHERE mov_title LIKE '%$query%'
顺便说一句,也许您应该考虑UNION ALL而不是?

答案 1 :(得分:1)

正确的方式

$stmt = $pdo->prepare("SELECT title, pic FROM series WHERE title LIKE ?");
$stmt->execute(["%".$_GET['keyword']."%"]);
$result = $stmt->fetchAll();

$stmt = $pdo->prepare("SELECT mov_title, mov_pic FROM movies WHERE mov_title LIKE ?");
$stmt->execute(["%".$_GET['keyword']."%"]);
foreach ($stmt as $row) {
    $result[] = $row;
}

没有sql注入,没有数据库过度杀伤

答案 2 :(得分:0)

查询联合之前的部分尚未完成。试试这个;

SELECT series.title, series.pic 
FROM series where title LIKE '%$query%'
UNION 
SELECT mov_title, mov_pic 
FROM movies WHERE mov_title LIKE '%$query%' 

答案 3 :(得分:0)

SELECT series.title, series.pic FROM series WHERE title LIKE '%$query%' 
 UNION
SELECT mov_title, mov_pic FROM movies WHERE mov_title LIKE '%$query%'