2016-05-06 1 views
0

私はdb内に動的表を持ち、その列は変更され、他のスクリプトから削除されます。それらの余分な列がnull値または空の値を保持する可能性があるので、最終的にそれらのセルをチェックする「クリーンアップ」アクションが必要です。すべてが空の場合は、行全体を削除します。一部の列が空の場合は行を削除します

enter image description here

赤いものは、私がチェックしたいものです。両方の列がnullまたは空白の場合はcustomers_id = 1、DELETE行。

私はこれが単なる例であると言っています... 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

それを実演しました。 $ 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"); 
      } 
関連する問題