传递给implode的无效参数

时间:2015-04-24 11:49:15

标签: php arguments comma implode

我从数据库中获取一些ID,并希望使用php 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;



}
?>

4 个答案:

答案 0 :(得分:1)

<?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 _ 函数,因为它们已被弃用。

答案 1 :(得分:0)

你试图破坏一个字符串,这显然不会起作用。所以你必须首先创建一个能够内爆它的数组,例如

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

echo implode(",", $z);

旁注:

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

答案 2 :(得分:0)

  

显示错误是因为您将单个值传递给implode。   但implode使用array将其转换为string。首先   创建array Ids然后implode逗号(或其他)   分开你想要使用)。

最好使用此

if(mysql_num_rows($res) > 0)
{
    $idArr = array();
    while($fetch = mysql_fetch_array($res))
    {
       $idArr[] = $fetch['qid'];    
    }
    $z =implode(', ', $idArr);
    echo $z;
}

答案 3 :(得分:0)

-4