如何使用 php 从 mySQL DB 中的两个表中添加非空值?

Posted

技术标签:

【中文标题】如何使用 php 从 mySQL DB 中的两个表中添加非空值?【英文标题】:How to add non-empty values from two tables in mySQL DB using php? 【发布时间】:2021-08-20 22:07:17 【问题描述】:

我在 mysql 数据库中有两个表。 table_1table_2

这两个表都有 4 列供用户使用

user_1、user_2、user_3 和 user_4

现在使用 php,我首先想从两个表中获取非空值,然后使用此查询。

<?php
$query1 = "

select * from table_1 where user_1!='' and user_1 is not null 
union all

select * from table_1 where user_2!='' and user_2 is not null 
union all

select * from table_1 where user_3!='' and user_3 is not null 
union all

select * from table_1 where user_4!='' and user_4 is not null 
    
";

然后我获取它并计算条目总数 = mysqli_num_rows,它给了我正确的详细信息为 3。

我也是为 table_2 做的

<?php
    $query2 = "
    
    select * from table_2 where user_1!='' and user_1 is not null 
    union all
    
    select * from table_2 where user_2!='' and user_2 is not null 
    union all
    
    select * from table_2 where user_3!='' and user_3 is not null 
    union all
    
    select * from table_2 where user_4!='' and user_4 is not null 
        
    ";

它显示我的总数为 2,这是正确的。

但是当我添加 count1 和 count2 时

$count1 = mysqli_num_rows($data1);
$count2 = mysqli_num_rows($data2);

$total = $count1+$count2;

它显示 1 或一些奇怪的值。请提出修复建议

【问题讨论】:

您描述的代码不会产生您声称的结果。请发布提供此结果的实际代码。 首先让我们说这是一个非常奇怪的数据结构,它可能对您的问题没有帮助。这些表代表什么,为什么要在多个不同的列和表中使用相同的数据项来设计它们?不这样做几乎是数据库设计的第一条规则,因为它会导致问题。 【参考方案1】:

一切都取决于$data1$data2 是什么。如果它们分别包含$query$query2 的结果,则可以预期结果为5。但是,由于您的结果不同,因此$data1$data2 与您的想法不同。因此,为了找出问题所在,您需要找出$data1$data2 是什么。您需要var_dump 他们并分析他们的价值,检测异常的性质。完成后,您将需要查看代码并弄清楚该值是如何最终进入您的变量的。

【讨论】:

【参考方案2】:

要获取哪一列不为空,您应该添加一些条件为AND,如果您的字段有空格,请考虑TRIM 条件,例如:

SELECT * FROM `table_1` WHERE `user_1` IS NOT NULL AND TRIM(column) <> '' union all

注意:如果你想在 php 变量中使用多个命令作为字符串,你应该在每个命令的末尾添加分号

$query ="
SELECT * FROM `table_1` WHERE `user_1` IS NOT NULL AND TRIM(user_1) <> '' union all;

SELECT * FROM `table_2` WHERE `user_2` IS NOT NULL AND TRIM(user_2) <> '' union all;

SELECT * FROM `table_3` WHERE `user_3` IS NOT NULL AND TRIM(user_3) <> '' union all;
"

【讨论】:

以上是关于如何使用 php 从 mySQL DB 中的两个表中添加非空值?的主要内容,如果未能解决你的问题,请参考以下文章

使用ajax从mysql DB检索和打印数据到文本框(如何在同一个php页面中使用它两次)

如何使用php更新mysql表中的特定表行[重复]

从 Postcode DB 获取 lat/lng 并在 PHP/MYSQL 中按最近的顺序排序

如何从 db 中的两个表中路由、获取和显示数据到 laravel 5.2 中的单个网页

如何使用 React 从 DB 中删除数据,并点击我使用 php 和 mysql 创建的 rest API?

如何使用 php 脚本从 html 表中更改 mysql 列