如何从SQL的ads_listing表查询数据生成带slug的标题链接
实现代码
<?php $user = 'myuser'; $pass = 'mypass'; try { $dbh = new PDO('mysql:host=localhost;dbname=mybase', $user, $pass); // 设置PDO默认返回关联数组,过滤冗余数字索引 $dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); // 一次查询同时取标题和slug,随机取10条数据 $query = $dbh->query("SELECT title, slug FROM ads_listing ORDER BY RAND() LIMIT 10"); $linkList = []; foreach ($query as $item) { // 按要求拼接链接格式 $linkList[] = "<a href=\"https://www.example.com/{$item['slug']}\" rel=\"nofollow noreferrer\">{$item['title']}</a>"; } // 用顿号拼接所有链接输出 echo implode('、', $linkList); $dbh = null; } catch (PDOException $e) { print "ERROR!:" . $e->getMessage() . "<br/>"; die(); } ?>
核心修改说明
- 合并了原代码中两次分离的查询,一次同时获取
title和slug两个字段,避免数据错位问题,同时降低数据库查询开销 - 通过SQL语句
ORDER BY RAND() LIMIT 10直接实现随机取10条数据的需求 - 修复了原代码中第一个
foreach末尾多余分号导致的空循环问题,避免变量取值异常 - 遍历查询结果时直接按照需求格式拼接链接,最后用顿号拼接输出,完全匹配你要的展示效果
内容的提问来源于stack exchange,提问作者Benjamin D
相关产品推荐
相关产品推荐

