php - 如果某些列为空则删除行

标签 php mysql

我的数据库中有一个动态表,该表的列已从其他脚本中更改和删除。因为所有这些额外的列最终可能会保存 null 或空值,所以我希望在某处进行“清理”操作来检查这些单元格,如果全部为空,则删除整行。

enter image description here

红色的是我要检查的。如果两列都为 null 或空 WHEREcustomers_id = 1,则删除行。

就像我说的,这只是一个示例...customers_id 之后可能有 5 或 10 列。我需要检查它们是否为空。 我可以在字符串中获取这些额外列的所有名称,如下所示:

$temparray = array();
$q = mydb_query("SHOW COLUMNS FROM $table WHERE field NOT REGEXP 'id|customers_id'");
while($row = mydb_fetch_array($q)){
  $temparray[] = $row['Field'];
}
$forSQL = " '".implode("', '", $temparray)."' ";  // gives  'client_custom_contact_person', 'client_custom_password'
$forPHP = implode(", ", $temparray); //gives   client_custom_contact_person, client_custom_password

检查所有这些列值是否为空以删除该行的最快方法是什么?

我应该使用 php foreach 函数吗?或者我可以做更快的 mysql 查询吗?

-谢谢

最佳答案

想通了。使用 $forPHP 字符串:

$q2 = mydb_query("SELECT $forPHP FROM $table WHERE customers_id = 1");
            $res = mydb_fetch_assoc($q2);
            if(!array_filter($res)) {
                //If all are empty then
                mydb_query("DELETE FROM $table WHERE customers_id = 1");
            }

关于php - 如果某些列为空则删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37070244/

相关文章:

php - 如何为动态生成的字段创建规则

php - LARAVEL - 按钮更改数据库中的 bool 值

php - 如何获取 Laravel block 的返回值?

mysql - 在单个列中显示多个行值

mysql - 在 MySQL 查询上运行 EXPLAIN 会出现语法错误

php - Mysql查询逻辑以及一遍又一遍返回相同变量的循环

php - 我的问题合适的数据库结构是什么?

mysql - 如何仅使用一台服务器镜像 MySQL 数据库

mysql - 无法使用 *DB.Rows() 获取所有行

mysql - 仅显示3天内未添加评论的用户的ID