2016-06-21 130 views
0

排除空数据库条目的PHP结果现在停止工作。 我生成了以下测试代码,它在结果中提供了空值。我很困惑,并不知道如何解决。请帮75岁的我第一次在互联网问题的网站从上述数据库空不表示为空NULL

<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> 

结果包括许多空白点,然后从任何的三个选项EOID数字。我做了什么?

+1

你在哪里得到空,没有,你使用一个变量,所以我不知道你在哪里得到那些 –

+0

使用任何地方'如果(!is_null($ db_row ['图片])) {'...并且在你的if语句中的'{'之前去掉';'。 –

+0

...并且在DB查询的'WHERE'语句中添加'AND image IS NOT NULL'会更好吗? –

回答

1

您可以在查询中添加NULL测试: $ attractquery =“select * from eatout where town ='Newcastle'AND image is NOT NULL”;

+0

这将过滤掉没有图像的所有行。从OP代码我不认为这是预期的结果,他希望打印所有行,但只显示可用的图片。 –

0

请检查您的列是否包含NULL值,而不是包含“NULL”的字符串。您应该启用对image列由mysqli_query和mysqli_error之前选中复选框为NULL

+0

我很惊讶的答复。尝试解决方案,如果(!is_null),并删除我的错误分号,但无济于事。程序本身继续查询许多字段以消除空值,因此只需将图像字段添加到选择查询中就不是答案。 – Auldbert

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> 

请删除“\”有NULL值。

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

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

第三有后,如果条款即

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

可能是一个字符串转换问题colan?

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/>" ; 
     } 
    } 
+0

如果原始问题中的'echo'实际上是在屏幕上写'NULL',这是一个明显的可能性; PHP的宽松输入意味着应该输出'NULL ==“”'so ** nothing **“。 – CD001

+0

谢谢你的回答。由bOne提供的解决方案和F3L1X79的实现工作,所以它显然是一个数据库字符串问题,即使在PhPmyAdmin中设置了空默认值。也许与通过Bullzip访问上传有关。现在我需要将dbase中的所有空字符串转换为null – Auldbert