PHP中移除While循环生成的ID字符串末尾逗号的方法
解决数组末尾多余逗号的问题
嘿,我来帮你搞定这个烦人的末尾逗号问题!你的代码里的逻辑小差错导致了这个问题——每次循环你都把单个ID加上逗号后赋值给$followedids,然后把这个带逗号的字符串塞进数组,最后用implode连接的时候,相当于把这些带逗号的元素再用','拼接,结果自然会多出末尾的逗号啦。
正确的打开方式
咱们换个思路,先把所有ID都收集到数组里,最后再统一处理分隔符:
- 先初始化一个空数组,专门存所有的
acc_id - 循环遍历查询结果时,直接把每个
acc_id丢进数组 - 循环结束后,用
implode把数组里的元素用你需要的分隔符连起来就行
修正后的代码
$Followingcount = mysqli_query($con,"SELECT * from followers where follower_id = '$idnow'"); $followedIdsArray = []; // 先搞个空数组等着装ID if (mysqli_num_rows($Followingcount) > 0) { while ($ids = mysqli_fetch_assoc($Followingcount)) { $followedIdsArray[] = $ids['acc_id']; // 把每个ID直接放进数组,不带逗号! } $arraystr = implode("','", $followedIdsArray); // 最后统一加分隔符 }
这样处理后,$arraystr就会变成'5','7','8'这种干净的格式,再也不会有末尾的多余逗号了~
额外提醒:别忘防SQL注入
你的当前SQL语句直接把$idnow拼进字符串里,这可是SQL注入的高危操作!建议换成mysqli的预处理语句,安全多了:
// 用预处理语句改写的版本 $stmt = mysqli_prepare($con, "SELECT acc_id from followers where follower_id = ?"); mysqli_stmt_bind_param($stmt, "i", $idnow); // 如果$idnow是字符串就换成"s" mysqli_stmt_execute($stmt); $result = mysqli_stmt_get_result($stmt); $followedIdsArray = []; if (mysqli_num_rows($result) > 0) { while ($ids = mysqli_fetch_assoc($result)) { $followedIdsArray[] = $ids['acc_id']; } $arraystr = implode("','", $followedIdsArray); } mysqli_stmt_close($stmt);
这样既能解决逗号问题,又能提升代码的安全性,一举两得~
内容的提问来源于stack exchange,提问作者user9198961
相关产品推荐
相关产品推荐

