Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Null和False之间的区别_Php_Mysql_Sql - Fatal编程技术网

Php Null和False之间的区别

Php Null和False之间的区别,php,mysql,sql,Php,Mysql,Sql,我正在观看关于使用php开发留言簿的教程 这是获取id为的消息的代码 public function GetMessage($id) { //Database $id = (int)$id; $gb_host = 'localhost' ; $gb_dbname = 'guestbook' ; $gb_username = 'root'; $gb_password = '' ; $connection = mysqli_

我正在观看关于使用php开发留言簿的教程

这是获取id为的消息的代码

public function GetMessage($id)
{
    //Database
    $id = (int)$id;
    $gb_host     = 'localhost' ; 
    $gb_dbname   = 'guestbook' ; 
    $gb_username = 'root';
    $gb_password = '' ;

    $connection  = mysqli_connect($gb_host , $gb_username , $gb_password,$gb_dbname);

    $querycheck = mysqli_query($connection,"SELECT * FROM `messages` WHERE `id` = $id");
    if($querycheck)
    {
        $message  = mysqli_fetch_assoc($querycheck); 

        return $message;
    }
    else
    {
        mysqli_close($connection);
        return NULL;
    }
    mysqli_close($connection);      
}
为什么在else语句中我们返回NULL而不是False

Null和False之间有什么区别?

类型

False是布尔值,null是值

因此:


在这种情况下,Imho中的更高精度和nullfalse是不正确的,因为方法应该返回一种类型的数据

在我们的方法中,它应该是数组,而不是特殊类型(null)或布尔值, 在其他地方使用这种方法会很容易,因为每次我们知道我们使用数组时,我们不必写这样的东西:

$messages = $dao->GetMessage(27);
if (is_array($messages)) {
    // ...
}
if (is_null($messages)) {
    $messages = []; // because wihout it foreach will down
}
foreach ($messages as $message) {
    // ...
}
对我来说,这很简单:
如果数据库中有数据,我们将接收非空数组,
如果数据库中没有数据,我们将收到空数组。

很明显

在DB术语中,
null
未知/未定义
false
是一个已知/定义的值。可能与@Marc B重复。我可以请您进一步澄清。。。False如果他没有在DB中找到行,我们可以使用它吗?
$message
如果DB中没有匹配的行,那么它就已经是False了。无法从空结果集中获取任何内容。好的,如果为false,为什么在else语句中他关闭连接并返回NULL为什么他没有将其保留为false您能解释我的代码吗?为什么他键入NULL而不是false。。为什么在else语句中他关闭连接并返回NULL为什么他没有将其保留为FALSE,因为找不到值。未找到任何内容应为NULL。如果未找到,则返回false。这是正确的语法。您可以同时使用这两种语法。你确定:D昨天让我感到困惑吗:Dbro我需要理解教程的代码,知道为什么为NULL而不是false
$messages = $dao->GetMessage(27);
if (is_array($messages)) {
    // ...
}
if (is_null($messages)) {
    $messages = []; // because wihout it foreach will down
}
foreach ($messages as $message) {
    // ...
}