MySQL 数组获取不起作用



我有一个 WHILE 循环来创建一组 4 个选项卡,其中包含我从数据库获得的选项卡标题。我在数据库中还有一个名为 tab_id (1,2,3,4) 的字段。

当我运行此代码时,所有 4 行的tab_id都是"1"......但选项卡标题显示正确。我做错了什么?

<?php
while($rows = mysqli_fetch_array($result)){
if ($rows['tab_id'] = 1) { ?>
<li class="active"><a href="#tab<? echo $rows['tab_id']; ?>" 
role="tab" data-toggle="tab" ><? echo $rows['tab_title']; ?></a>
</li>
<?php } else { ?>        
<li><a href="#tab<? echo $rows['tab_id']; ?>" role="tab" data-
toggle="tab" ><? echo $rows['tab_title']; ?></a></li>
<?php }} ?>

单个=是php中的赋值运算符。 所以 php 认为你在说"将$rows['tab_id']声明为11是否松散地评估为true?答案是"是",因此条件始终返回true。 (这与上一行的while循环中发生的逻辑相同。

要进行松散的比较(这就是所需要的),您只需再添加一个=即可==

进一步的建议是,你的片段可以写得更多 D.R.Y.(不要重复自己)。 您只是修改class="active"因此无需重写整个<li>标记。

建议代码:

while($rows = mysqli_fetch_array($result)){
<li<?php if($rows['tab_id'] == 1) echo ' class="active"'; ?>><a href="#tab<? echo $rows['tab_id']; ?>" 
role="tab" data-toggle="tab" ><? echo $rows['tab_title']; ?></a>
</li>
<?php } ?>

while($rows = mysqli_fetch_array($result)){
echo "<li",($rows['tab_id'] == 1 ? ' class="active"' : ''),">";
echo "<a href="#tab{$rows['tab_id']}" role="tab" data-toggle="tab" >{$rows['tab_title']}</a>";
echo "</li>";
}
<?php
while($rows = mysqli_fetch_array($result)){
if ($rows['tab_id'] ==1) { ?>
<li class="active"><a href="#tab<? echo $rows['tab_id']; ?>" 
role="tab" data-toggle="tab" ><? echo $rows['tab_title']; ?></a>
</li>
<?php } else { ?>        
<li><a href="#tab<? echo $rows['tab_id']; ?>" role="tab" data-
toggle="tab" ><? echo $rows['tab_title']; ?></a></li>

最新更新