我从数据库中获取一些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;
}
?>
答案 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已弃用,将来会被删除。使用BooleanSupplier
或mysqli
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