数据库Null不表现为Null

时间:2016-06-21 10:15:27

标签: php

排除空数据库条目的Php结果现在已停止工作。 我生成了以下测试代码,它在结果中提供了空值。我感到困惑,并不知道如何解决。请帮助一个75岁的孩子和我第一次访问互联网问题网站

 <body>  
  <?PHP
    include "dbcfg.php";
    $link = mysqli_connect($mysqlserver, $mysqlusername, $mysqlpassword,        $dbname) or
            die("Error connecting to mysqli server: " . \mysqli_error());
    if (!$link) {
        die("Connection failed: " . mysqli_connect_error());
    }
    $attractquery = "select * from eatingout where town = 'Newcastle'";
    $result = \mysqli_query($link, $attractquery) or die
                    ("Query to get data from table failed: " . \mysqli_error());
    while ($db_row = mysqli_fetch_array($result)) { // iterate through all selected 
        /*if($db_row['image'] != null){*/ 
       /*if (!empty($db_row['image']));{*/
       if(isset($db_row['image']));{ 
        echo $db_row['image'] ." ". $db_row['EOID']."<br/>" ;
        }
    }
        ?>
</body>

上述结果包括多个Null,其后是三个选项中的任何一个的EOID数字。我做了什么?

4 个答案:

答案 0 :(得分:1)

您可以在查询中添加NULL测试: $ attractquery =&#34;选择*来自eatout,其中town =&#39; Newcastle&#39; AND图像不是空的&#34;;

答案 1 :(得分:1)

可能是字符串转换问题?

while ($db_row = mysqli_fetch_array($result)) {
        if(isset($db_row['image']) && $db_row['image'] != NULL && strtolower($db_row['image']) != 'null' ){
            echo $db_row['image'] ." ". $db_row['EOID']."<br/>" ;
        }
    }

答案 2 :(得分:0)

请检查您的列是否包含NULL值而不是包含“NULL”的字符串。您应该通过勾选NULL

复选框来启用列image的NULL值

答案 3 :(得分:0)

<body>  
  <?PHP
    include "dbcfg.php";
    $link = mysqli_connect($mysqlserver, $mysqlusername, $mysqlpassword,        $dbname) or
            die("Error connecting to mysqli server: " . mysqli_error());
    if (!$link) {
        die("Connection failed: " . mysqli_connect_error());
    }
    $attractquery = "select * from eatingout where town = 'Newcastle' and ifnull(image,'')=''";
    $result = mysqli_query($link, $attractquery) or die
                    ("Query to get data from table failed: " . mysqli_error());
    while ($db_row = mysqli_fetch_array($result)) { // iterate through all selected 
        /*if($db_row['image'] != null){*/ 
       /*if (!empty($db_row['image']));{*/
       if(!is_null($db_row['image'])){ 
        echo $db_row['image'] ." ". $db_row['EOID']."<br/>" ;
        }
    }
        ?>
</body>

请删除&#39; \&#39;在mysqli_query和mysqli_error之前。

您应该使用!is_null($ db_row [&#39; image&#39;])而不是isset bcoz $ db_row [&#39; image&#39;]将始终设置。

其次,您可以在查询中检查空值,如其他答案中所述。

第三,在if子句之后有一个可乐,即

if(isset($db_row['image']));{ 
            echo $db_row['image'] ." ". $db_row['EOID']."<br/>" ;
            }