You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP循环展示MySQL数据表HTML无序列表时列表为空问题

问题:SQL数据生成HTML无序列表为空,但单条数据可正常输出

我尝试用SQL表字段生成HTML无序列表,但列表为空;不过执行echo $stories[0]['title']能得到预期值“jason”,尝试加/不加echo结果一致。

数据库结构及数据

mysql> select * from story;

+----+-------+-------------------------+---------+ 
| id | title | content                 | author  |
+----+-------+-------------------------+---------+ 
|  1 | jason | histoire des argonautes | guigous | 
|  2 | jason | histoire des argonautes | guigous |

对应的PHP+HTML代码

<?php
require 'connec.php';
$pdo = new PDO(DSN,USER,PASS);

$query ='select * from story';
$statement = $pdo->query($query);
$stories= $statement->fetchAll();
?>

<!DOCTYPE html>
<body>

<?php 
echo $stories[0]['title'];
for ($i=0; count($stories)>$i; $i++) :
?>
    <ul>
        <li> <? echo $stories[$i]['title']?></li>
        <li><? echo $stories[$i]['content']?></li>
        <li><? echo $stories[$i]['author']?></li>
    </ul>
<?php endfor; ?>
</body>

问题原因及修复方法

问题出在循环里的**短标签<?**上,多数PHP环境默认关闭了短标签支持,导致<? echo ... ?>无法被PHP解析,所以列表内容无法输出。而你最开始的echo $stories[0]['title'];用的是完整的<?php标签,所以能正常执行。

修复方案:

  • 把循环里的所有短标签<?替换为完整的<?php标签,修改后的代码如下:
<?php 
echo $stories[0]['title'];
for ($i=0; count($stories)>$i; $i++) :
?>
    <ul>
        <li> <?php echo $stories[$i]['title']?></li>
        <li><?php echo $stories[$i]['content']?></li>
        <li><?php echo $stories[$i]['author']?></li>
    </ul>
<?php endfor; ?>
  • (不推荐)如果一定要用短标签,可以修改php.ini配置文件,设置short_open_tag = On,但这种方式会降低代码的兼容性,不建议在生产环境使用。

内容的提问来源于stack exchange,提问作者Maël Etienne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 05:07:47