我有两个表'电影'和'系列'我想用这个关键字在同一时间在这两个表中获取
所以我尝试这样做但是我得到了一个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);
答案 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%'