2011-01-06 118 views
0

我有一個12列200行的表。我想用php/mysql高效地檢查這個表中的空/空字段。例如。 「(第3行第30行)是空的」。有沒有一個功能可以做到這一點? 簡介:SELECT * FROM TABLE_PRODUCTS其中任何列都有空的字段。檢查mysql表中的空字段

+0

沒有在表中 「30行」。這是一堆,而不是有序的列表。 – 2011-01-06 17:53:22

回答

1
SELECT * FROM table WHERE COLUMN IS NULL 
4

empty != null

select * from table_products where column is null or column=''; 
1

據我知道有沒有函數來檢查在MySQL中的每一列,我想你必須通過柱像這樣循環......

$columns = array('column1','column2','column3'); 
foreach($columns as $column){ 
    $where .= "$column = '' AND "; 
} 
$where = substr($where, 0, -4); 
$result = mysql_query("SELECT * FROM table WHERE $where",$database_connection); 
//do something with $result; 

=''將爲您獲得空白字段。

+0

你好,謝謝。而不是手動列出列,是否有辦法一次列出所有列? – karto 2011-01-06 15:52:21

0
$sql = "SELECT * FROM TABLE_PRODUCTS"; 
$res = mysql_query($sql); 

$emptyFields = array(); 

while ($row = mysql_fetch_array($res)) { 
    foreach($row as $key => $field) { 
     if(empty($field)) || is_null($field) { 
      $emptyFields[] = sprintf('Field "%s" on entry "%d" is empty/null', $key, $row['table_primary_key']); 
     } 
    } 
} 

print_r($emptyFields); 

未測試,所以它可能有錯別字,但這是主要想法。 這就是如果你想確切知道哪一列是空的或NULL。

此外,它不是一個非常有效的方式來做一個非常大的表,但應該快速與200行長的表。也許還有用於處理應用程序中的空/空字段簡潔的解決方案,不涉及不必明確檢測它們一樣,但是這取決於你想做的事:)

+0

謝謝朋友,它現在像魔術一樣工作。只需要格式化一下。爲我節省了很多時間。 – karto 2011-01-06 17:04:57

1

你總是可以嘗試這個方法是什麼:

//do connection stuff beforehand 

$tableName = "foo"; 

$q1 = <<<SQL 
SELECT 
    CONCAT(
    "SELECT * FROM $tableName WHERE" , 
    GROUP_CONCAT(
     '(' , 
     '`' , 
     column_name, 
     '`' , 
     ' is NULL OR ', 
     '`' , 
     column_name , 
     '`', 
     ' = ""' , ')' 
     SEPARATOR ' OR ') 
    ) AS foo 
FROM 
information_schema.columns 
WHERE 
table_name = "$tableName" 

SQL; 

$rows = mysql_query($q1); 

if ($rows) 
{ 
    $row = mysql_fetch_array($rows); 
    $q2 = $row[0]; 
} 

$null_blank_rows = mysql_query($q2); 

// process the null/blank rows.. 
1
<?php 
    set_time_limit(1000); 

    $schematable = "schema.table"; 

    $desc = mysql_query('describe '.$schematable) or die(mysql_error()); 

    while ($row = mysql_fetch_array($desc)){ 

     $field = $row['Field']; 
     $result = mysql_query('select * from '.$schematable.' where `'.$field.'` is not null or `'.$field.'` != ""'); 

     if (mysql_num_rows($result) == 0){ 
      echo $field.' has no data <br/>'; 
     } 

    } 
?> 
0

檢查這個代碼空場

$sql = "SELECT * FROM tablename WHERE condition"; 

$res = mysql_query($sql); 

while ($row = mysql_fetch_assoc($res)) { 

    foreach($row as $key => $field) { 
     echo "<br>"; 
     if(empty($row[$key])){ 
      echo $key." : empty field :"."<br>";   
     }else{ 
      echo $key." =" . $field."<br>";  1 
     } 
    } 

}