【问题标题】:Php rows from db duplicating来自数据库复制的 PHP 行
【发布时间】:2025-12-27 07:35:11
【问题描述】:

嘿,我有问题,我需要将所有行都放到变量 $url 中,但我只得到最后一行

$sql="SELECT kanalas FROM ikelti_vartotojai ORDER BY id";

if ($result=mysqli_query($conn,$sql))
  {

  while ($row=mysqli_fetch_row($result)){  
    $allchannels= $row[0];
    }  
}

$url = 'https://ids.com/?id='.$allchannels.'';

echo $url;

【问题讨论】:

  • 我之前没看到类似的帖子吗?编辑:对*.com/q/52742863不知道你为什么删除和转发。
  • 注意:mysqli 的面向对象接口明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的mysql_query 接口混淆。在您对程序风格投入过多之前,值得转换一下。示例:$db = new mysqli(…)$db->prepare("…") 过程接口是 PHP 4 时代引入的 mysqli API 的产物,不应在新代码中使用。
  • 提示:如果你真的想要所有个频道,你需要一个数组,而不是你不断替换的单个变量。
  • 您正在覆盖$allchannels。使用数组或连接字符串。
  • @FelippeDuarte 这就是马里奥在他们删除的问题*.com/q/52742863 中所说的,但你看不到它。编辑:“你在循环中覆盖 $url。你的回声只在循环后出现一次。- mario 2 小时前”“你在每次迭代中设置 $url,所以只有最后一个实际上将被设置。你到底想要发生什么?你想要一个完整的 URL 字符串,还是 URL 数组?只是回显 URL?- GrumpyCrouton 2 小时前"

标签: php mysql mysqli while-loop rows


【解决方案1】:

改变

while ($row=mysqli_fetch_row($result)){  
  $allchannels= $row[0];
}  

进入

while ($row=mysqli_fetch_row($result)){  
  $allchannels[] = $row[0];
}

现在$allchannels 是一个包含$row[0] 元素的数组。 如果您想在数组中包含 URL,只需在推送之前添加它们:

while ($row=mysqli_fetch_row($result)){  
  $allchannels[] = 'https://ids.com/?id=' .$row[0];
}

【讨论】:

  • 注意:本行数组到字符串的转换-> $allchannels[] = $row[0];
  • 但是如何获取所有行?比如 ?id=1463,23463,2343,46574,5423,6123
  • 在while循环中使用$allchannels[] = $row[0];,并设置$url = 'https://ids.com/?id=' .implode(',', $allchannels);