我设法显示MySQL数据库中的数据,但我遇到了一个问题。
我想要实现的是当价格的值等于 0 时,它应显示免费而不是0。
我试图在网上找到一个解决方案,但也许我错了,因为我对PHP很新。
<?php
while ($row = mysqli_fetch_array($query))
{
$amount = $row['amount'] == 0 ? '' : number_format($row['amount']);
echo '
echo '<tr>
<td>'.$row['id'].'</td>
<td>'.$row['event'].'</td>
<td>'.$row['price'].'</td>
<td>'.$row['address'].'</td>
<td>'.$row['info'].'</td>
<td>'.$row['contact'].'</td>
</tr>';
}?>
答案 0 :(得分:1)
你很亲密。看起来您正在测试三元组中的0
,并为$amount
$amount = ($row['amount'] == 0) ? '' : number_format($row['amount']);
您可以将其更改为(假设amount
数据类型是数字而不是字符串):
$amount = ($row['amount']) ? '$'.number_format($row['amount']) : 'Free';
如果amount
是数据库中的字符串,您可能需要像过去那样测试"0"
:
$amount = ($row['amount'] !== "0") ? '$'.number_format($row['amount']) : 'Free';
然后您有下一个问题 - 您从未在代码中使用$amount
:]
完整更改(基于您的代码示例):
<?php
while ($row = mysqli_fetch_array($query)) {
// Assign either 'Free' or a formatted value to '$amount'
$amount = ($row['amount']) ? '$'.number_format($row['amount']) : 'Free';
// And be sure to use $amount here
echo '<tr>
<td>'.$row['id'].'</td>
<td>'.$row['event'].'</td>
<td>'.$amount.'</td>
<td>'.$row['adress'].'</td>
<td>'.$row['info'].'</td>
<td>'.$row['contact'].'</td>
</tr>';
}
?>
注意:您在$row['adress']
中也有拼写错误,除非错误在数据库表中,它应该是$row['address']
。
答案 1 :(得分:0)
为什么不试试这个?
echo ($row['price'] == 0) ? 'free' : $row['price'];
答案 2 :(得分:0)
您在该代码中有一些破碎的格式,但您已经有了正确的想法。具体来说,这一行:
$amount = $row['amount'] == 0 ? '' : number_format($row['amount']);
将完全按照您的意愿行事。只需更改如下:
$amount = $row['amount'] == 0 ? 'Free' : number_format($row['amount']);
然后echo $amount;
您想要金额显示单词&#34; Free&#34;如果金额为零。如果你愿意的话,你可以专门为此付出代价。
e.g。
echo '\t<td>', $row['price'] == 0 ? 'Free' : number_format($row['amount']), '</td>';