PDO 中的联合选择不起作用

use*_*866 -1 php pdo

我是使用 PDO 发出数据库请求的新手,需要一点帮助。我有以下数据库调用:

$stmt1 = $pdo->prepare('
    SELECT * FROM news WHERE pub_date >= ? AND pub_date < ? AND display = 1 ORDER BY pub_date DESC
    UNION
    SELECT * FROM vs_news WHERE pub_date >= ? AND pub_date < ? AND display = 1 ORDER BY pub_date DESC
');
$stmt1->bindParam(1, $col_start);
$stmt1->bindParam(2, $col_end);
$stmt1->execute();
Run Code Online (Sandbox Code Playgroud)

我已经阅读了足够多的内容,认为 UNION 与 PDO 兼容,但我似乎无法正确获取代码,也找不到完整代码格式的示例。

两个表中的字段相同,并且 db 调用仅适用于一个或另一个表,但不适用于我展示的 UNIION。

有人可以指出我的问题在哪里吗?

谢谢

Men*_*ual 5

使用 ?意味着你需要为每个匹配一个参数?

使用这种方法:

$stmt1 = $pdo->prepare('
    SELECT * FROM news WHERE pub_date >= :date1 AND pub_date < :date2 AND display = 1 ORDER BY pub_date DESC
    UNION
    SELECT * FROM vs_news WHERE pub_date >= :date1 AND pub_date < :date2 AND display = 1 ORDER BY pub_date DESC
');
$stmt1->bindParam(':date1', $col_start);
$stmt1->bindParam(':date2', $col_end);
$stmt1->execute();
Run Code Online (Sandbox Code Playgroud)

还; 使用联合,确保在两个查询中使用相同数量的列。