php - 从所有表中选择行的简单方法

标签 php mysql mysqli

我想在我的 mysql 数据库中选择一些行,我有 3 个具有相同结构的表,我尝试使用我创建的脚本并且这有效,但它似乎在我的脚本中占用了太多行。

<?php
$check1 = mysqli_query($con, "SELECT * FROM text WHERE keyword='$string'");
$check2 = mysqli_query($con, "SELECT * FROM sticker WHERE keyword='$string'");
$check3 = mysqli_query($con, "SELECT * FROM image WHERE keyword='$string'");
if(mysqli_num_rows($check1) == 0 && mysqli_num_rows($check2) == 0 && mysqli_num_rows($check3) == 0) {
    echo "success";
}
?>

还有其他方法可以缩短上面的脚本吗?谢谢你:)

最佳答案

如果所有表都具有相同的结构,您可以使用 UNION 查询同时返回所有三个表中的行:

$check = mysqli_query($con, "SELECT * FROM text WHERE keyword='$string'
                             UNION
                             SELECT * FROM sticker WHERE keyword='$string'
                             UNION
                             SELECT * FROM image WHERE keyword='$string'");

这将为您提供与三个现有查询相同的行集。请注意,无法确定给定行来自哪个表,因此您可能需要添加一个额外的字段来指示,例如

$check = mysqli_query($con, "SELECT *, 'text' AS src FROM text WHERE keyword='$string'
                             UNION
                             SELECT *, 'sticker' AS src FROM sticker WHERE keyword='$string'
                             UNION
                             SELECT *, 'image' AS src FROM image WHERE keyword='$string'");

关于php - 从所有表中选择行的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55988653/

相关文章:

php - 在 Magento 的高级搜索页面中更改属性排序

mysql - 按查询分组仅返回最新结果 - Codeigniter

php - MySQL - 从3个表中获取数据

php - 在 PHP 中,如何测量请求使用硬盘的时间?

php - 如何使用 Limit 在 mysql 查询中始终获取特定行

mysql - 如何在查询中设置MySQL变量

php - MySQL 文件出现错误 1064

php - 在 PHP 中使用 if/else 检查 SQL 查询

php - MYSQLi 日期格式 - 选择查询

javascript - 更新/编辑表单,以便它加载从 sql 表中选择的 SELECT 选项值