如何使用 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_1 和 table_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页面中使用它两次)
从 Postcode DB 获取 lat/lng 并在 PHP/MYSQL 中按最近的顺序排序
如何从 db 中的两个表中路由、获取和显示数据到 laravel 5.2 中的单个网页