неверные аргументы переданы для взрыва

Я получаю некоторый набор идентификаторов из базы данных и хочу напечатать их через запятую, используя php implode() метод.

Но это дает мне предупреждение, что я передал недопустимые аргументы для взрыва. Так почему я получаю это предупреждение и как я могу исправить свой код, чтобы разделить запятую идентификатора?

<?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;}
?>

0

Решение

Вы пытаетесь взорвать одну строку, которая, очевидно, не будет работать. Таким образом, вы должны сначала создать массив, чтобы иметь возможность его взорвать, например,

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

echo implode(",", $z);

Примечания стороны:

mysql_* API устарел и будет удален в будущем. использование mysqli с подготовленными заявлениями, или же PDO с подготовленными заявлениями, они намного безопаснее.

0

Другие решения

<?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() в неподходящем месте.

Сначала вы должны получить все идентификаторы в массиве, а затем использовать implode()

Выше исправлен код.

ПРИМЕЧАНИЕ: пожалуйста, не используйте mysql_ функции, поскольку они устарели.

1

Ошибка отображается, потому что вы передали одно значение 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;
}
0

<?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);}
?>
0
По вопросам рекламы [email protected]