Я получаю некоторый набор идентификаторов из базы данных и хочу напечатать их через запятую, используя 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;}
?>
Вы пытаетесь взорвать одну строку, которая, очевидно, не будет работать. Таким образом, вы должны сначала создать массив, чтобы иметь возможность его взорвать, например,
while($fetch = mysql_fetch_array($res)) {
$z[] = $fetch['qid'];
//^^ See here
}
echo implode(",", $z);
Примечания стороны:
mysql_*
API устарел и будет удален в будущем. использование mysqli
с подготовленными заявлениями, или же PDO с подготовленными заявлениями, они намного безопаснее.
<?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_ функции, поскольку они устарели.
Ошибка отображается, потому что вы передали одно значение
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;
}
<?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);}
?>