2011-01-06 70 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 
     } 
    } 

}