gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 04:07:07 25 4
gpt4 key购买 nike

我有一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com