1

我正在尝试构建一个返回布尔值的函数。如果一行中的所有字段都不是空的,它应该返回 TRUE,如果有一个是空的,它应该返回 FALSE。该表有很多字段,那么有没有办法在 PHP 和 MySQL 中有效地做到这一点?

谢谢!

编辑:

我当前的脚本如下:

private function isFull(){
    $mysqli = //I create the connection
    $result = $mysqli->query("SELECT * FROM table WHERE id = 1 LIMIT 1");
    if($row = $result->fetch_array()){
        if($row['field1'] != ''){
            $toReturn = TRUE;
        } else {
            $toReturn = FALSE;
        }
        //etc
    }
}
4

3 回答 3

3

您可以遍历该行以检查值,如果发现空行则中断并返回 false ...

private function isFull(){
    $mysqli = //I create the connection
    $result = $mysqli->query("SELECT * FROM table WHERE id = 1 LIMIT 1");
    if($row = $result->fetch_array()){
        //assume that all are not empty and set the return value to true
        $return = true;
        //loop over each field in the row ...
        foreach($row as $key => $value){
            if(empty($value)){
               //at the first empty field, set return to false and break the loop
               $return = false;
               break;
            }
        }
    } else {
        //no row?
        $return = false;
    }

    return $return;
}
于 2013-08-29T15:38:54.793 回答
1

为什么不保持简单:

private function isFull(){
    $mysqli = //I create the connection
    $result = $mysqli->query("SELECT * FROM table WHERE id = 1 LIMIT 1");
    if($row = $result->fetch_array()){
        if(trim($row['field1']) == '' || trim($row['field2']) == ''){
            return false;
        }
    }
    return true;
}

如果任何字段为空,它将返回 false。否则它将返回 true。

trim()用于删除可能的结束和开始空间。

如果您不想限制结果,只需使用while循环即可。一旦你在你的while循环中返回了一些东西,while循环就会中断,所以其余的不会被执行。

于 2013-08-29T15:39:04.067 回答
0

我会做:

$empty=true;
$qry = mysql_query($query,$connect_db);
while ($data = mysql_fetch_assoc($qry)){
    if($data["column"]=="")
    {
        $empty=false;
    }
}
于 2013-08-29T15:33:38.887 回答