传递给内爆的无效参数
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_ 函数,因为它们已被弃用。
我正在从数据库中获取一些 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
. Butimplode
uses anarray
to convert it in astring
. So first create anarray
ofIds
thenimplode
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_ 函数,因为它们已被弃用。