如何使用PHP PDO读取数据库列值实现下拉框绑定ID与页面名称
核心问题
原有代码存在两处逻辑错误,导致无法生成预期的下拉选项:
- 仅执行一次
$result->fetch(PDO::FETCH_ASSOC)只会返回结果集中的第一行数据,无法读取cmspages表存储的所有页面记录 - 遍历对象错误:当前逻辑是遍历单条记录的字段键值对,会把单条记录的
cmsPageID、pageName两个字段拆成两个独立选项,而非按每条记录生成对应选项,也没有按要求绑定字段映射关系
修正后代码
<select name="pageID"> <?php // 连接时指定字符集,避免中文乱码 $con = new PDO('mysql:host=localhost; dbname=test; charset=utf8mb4', 'root', ''); $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // 明确查询需要的字段,减少无用数据传输 $query = "SELECT `cmsPageID`, `pageName` FROM `cmspages`"; $result = $con->query($query); // 循环逐行拉取所有记录,直到遍历完全部结果 while($row = $result->fetch(PDO::FETCH_ASSOC)){ // 转义HTML特殊字符,避免页面结构被特殊内容破坏 $optionValue = htmlspecialchars($row['cmsPageID']); $optionText = htmlspecialchars($row['pageName']); echo "<option value=\"{$optionValue}\">{$optionText}</option>"; } ?> </select>
补充说明:如果需要设置某个选项默认选中,可以在输出option时判断当前记录的cmsPageID是否等于目标值,匹配时给option标签添加
selected属性即可。
内容的提问来源于stack exchange,提问作者thom0075
相关产品推荐
相关产品推荐

