PHP如何获取查询结果集行号并赋值给HTML元素ID属性
解决方法
你只需要在循环外定义一个计数器变量,每次循环累加后输出到预留位置即可,具体修改如下:
第一步:添加计数器初始化代码
在while循环启动前插入行号计数器定义:
$lineNum = 1; // 行号从1开始计数,你也可以按需改为从0开始 while($row = mysqli_fetch_row($res2)) {
第二步:补全ID的输出代码
把所有预留的<?php ?>位置替换为输出计数器的代码:
id="imgDG<?php echo $lineNum; ?>" <!-- 其他ID同理替换即可 -->
第三步:循环末尾累加计数器
在循环块结束的<?php }前添加计数器自增逻辑:
<?php $lineNum++; } ?>
完整修改后的渲染代码参考
<body> <?php $lineNum = 1; // 初始化行号计数器 while($row = mysqli_fetch_row($res2)) { // 调试用的print_r可以保留,上线后建议删除 // print_r($row); ?> <div class="item"> <img class="trj_img_cls" src="RSC/COMING_SOON.jpg" alt="" id="imgDG<?php echo $lineNum; ?>"> <div class="texto_trj"> <div class="nombre_producto"> <h2 id="ttlDG<?php echo $lineNum; ?>"><?php echo $row[0]; // 对应查询的NAME字段 ?></h2> </div> <div class="precio_producto"> <i class="icon-dollar"></i> <label id="prDG<?php echo $lineNum; ?>"><?php echo $row[1]; // 对应查询的PRICE字段 ?></label> </div> <div class="caracteristicas"> <ul id="caractDG<?php echo $lineNum; ?>"></ul> </div> </div> </div> <?php $lineNum++; // 行号自增 } ?> </body>
补充建议
如果需要ID更稳定(不受查询排序、筛选条件变化影响),可以修改SQL语句把商品主键ID也查出来:
$res2 = mysqli_query($con,"SELECT ID, NAME, PRICE FROM product WHERE AVAILABLE = 1 AND ID_CATEGORY = 17");
之后直接输出数据库主键作为ID后缀即可:<?php echo $row[0]; ?>,比循环计数器更可靠。
内容的提问来源于stack exchange,提问作者Santiago Barreiro
相关产品推荐
相关产品推荐

