当字段为空时,PHP 不返回任何行

标签 php mysql

我有一个 while 循环,它遍历从数据库查询返回的行。

查询

$sql = "SELECT t.barcode AS barcode, t.code, t.brand, t.name, t.cost, t.price, t.vat, SUM(n.stock) AS stock
    FROM t 
    INNER JOIN c.am ON t.code=am.code
    INNER JOIN n ON t.code=n.code WHERE (n.name='X' OR n.name='Y') 
    AND t.code IN ($in)
    GROUP BY t.code, t.name, t.cost, t.salesprice, t.vat";

    $result = $mysqli->query($sql);

  echo "<table id='maintable'><tr><th>Barcode</th><th>Name</th><th>Brand</th></tr>";
  while($row = $result->fetch_array()) {
   if(empty($row['barcode'])){
   $barcode = "none";
   }
   $barcode = $row['barcode'];
   $name = $row['name'];
   $brand = $row['brand'];

   echo "<td>" . $barcode . "</td>";
   echo "<td>" . $name . "</td>";
   echo "<td>" . $brand . "</td>";
  }
  echo "</table>";

问题是如果条形码为空(不在数据库表中),则不会显示任何行。但是,如果有条形码,该行会显示。在我的示例中,我尝试检查 $row['barcode'] 是否为空以分配一个字符串,以便该行仍会显示但不成功。

在数据库中的表本身中,条形码有一个 Null 字段设置为 YES,Default Field 设置为 NULL 所以我也尝试过:

   if(is_null($row['barcode'])) { ..... };

但是没有成功。

我在某处读到 empty 可以等同于:''、0 和 NULL 所以我认为它失败了,因为检查“empty”是否是错误的方法? 任何帮助表示赞赏。

最佳答案

if(empty($row['barcode'])){
   $barcode = "none";
} else {
   $barcode = $row['barcode'];
}

甚至更好:

$barcode = empty($row['barcode'])?"none":$row['barcode'];

所以你的代码将是:

while($row = $result->fetch_array()) {
   $barcode = empty($row['barcode'])?"none":$row['barcode'];
   $name = $row['name'];
   $brand = $row['brand'];

   echo "<td>" . $barcode . "</td>";
   echo "<td>" . $name . "</td>";
   echo "<td>" . $brand . "</td>";
}

更新 不确定您的数据库结构,但如果您需要一些空的 t.barcode 值,您的查询可能是这样的:

$sql = "SELECT 
      t.barcode AS barcode, 
      n.code,  
      t.brand, t.name, t.cost, t.price, t.vat, 
      SUM(n.stock) AS stock
FROM n 
LEFT JOIN t 
ON t.code=n.code 
   AND t.code IN ($in)
WHERE (n.name='X' OR n.name='Y') 
GROUP BY n.code, t.name, t.cost, t.salesprice, t.vat";

而且我不明白 INNER JOIN c.am ON t.code=am.code 代表什么,也许你应该删除它。

关于当字段为空时,PHP 不返回任何行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29970589/

相关文章:

php - 在 PHP 中向变量输入字符串

php - 函数 php 中的 if/else 语句未插入

mysql - 使用 select 根据查询更新列

mysql - SQLAlchemy 更新操作出现 MySQL 错误 1292

php - 无法将自定义站点配置添加到 Silverstripe 4

php - 在 Yii 中,为什么使用 CActiveDataProvider 而不是 Post::model()->findAll()?

php - 使用php在mysql中加载没有文件的数据infile

javascript - Laravel - 在数据库中存储多个复选框表单值

php - 将多个复选框值插入 MySQL

mysql - 找出员工的总余额