我的数据库中有一个动态表,列被更改并从其他脚本中删除。因为有可能所有这些额外的列可能保留空值或空值,最终我想要进行清理'检查那些单元格的某个动作,如果全部为空,则删除整行。
红色的那些是我要检查的。如果两个列都为null或为空,则WHERE customers_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查询?
-Thanks
答案 0 :(得分:0)
想出来。使用$ 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");
}