传递给内爆的无效参数

invalid arguments passed to implode

我正在从数据库中获取一些 ID 集,并希望使用 php implode() 方法以逗号分隔打印它们。

但是它警告我我将无效参数传递给了 implode。那么,为什么我会收到此警告以及如何修复我的代码,以将 id 的逗号分隔开?

<?php
session_start();
if(isset($_SESSION['tstid']))
{
    $tstid = $_SESSION['tstid'];
}
include('references.php');
include('config.php');
$query = "select * from testquestions where testid='".$tstid."'";
$res = mysql_query($query);

if(mysql_num_rows($res) > 0)
{

    while($fetch = mysql_fetch_array($res))
    {


            $z =implode(', ', $fetch['qid']);



    }
    echo $z;



}
?>

您正在尝试内爆单个字符串,这显然是行不通的。所以你必须先创建一个数组才能内爆它,例如

while($fetch = mysql_fetch_array($res)) {
    $z[] = $fetch['qid'];
    //^^ See here
}

echo implode(",", $z);

旁注:

mysql_* API 已弃用,将来会被删除。使用mysqli with prepared statements, or PDO with prepared statements它们更安全

The error is showing because you passed a single value to implode. But implode uses an array to convert it in a string. So first create an array of Ids then implode it by comma(or whatever separate you want to use).

最好用这个

if(mysql_num_rows($res) > 0)
{
    $idArr = array();
    while($fetch = mysql_fetch_array($res))
    {
       $idArr[] = $fetch['qid'];    
    }
    $z =implode(', ', $idArr);
    echo $z;
}
<?php
session_start();
if(isset($_SESSION['tstid']))
{
    $tstid = $_SESSION['tstid'];
}
include('references.php');
include('config.php');
$query = "select * from testquestions where testid='".$tstid."'";
$res = mysql_query($query);

if(mysql_num_rows($res) > 0)
{
    $z=array();
    while($fetch = mysql_fetch_array($res))
    {


            $z[] =$fetch['qid'];



    }
   echo implode(",", $z);



}
?>
<?php
session_start();
if (isset($_SESSION['tstid'])) {
    $tstid = $_SESSION['tstid'];
}
include('references.php');
include('config.php');
$query = "select * from testquestions where testid='".$tstid."'";
$res = mysql_query($query);
if (mysql_num_rows($res) > 0) {
    $z = array();
    while($fetch = mysql_fetch_array($res)) {
        $z[] = $fetch['qid'];
    }
    echo implode(', ', $z);
}
?>

说明:您在不恰当的地方使用了implode()

你应该先把所有的id放在一个数组里然后用implode()

以上是更正后的代码。

注意:请不要使用 mysql_ 函数,因为它们已被弃用。