我在将数组插入数组时遇到问题。我的代码就像:
function routesL($location,$connexion){ //prend le id de quartier et récupere les quartiers disponibles pour deplacer
$req = "SELECT idQArivee, transport
FROM p1810512.Routes
WHERE idQDepart = '$location'";
$res = mysqli_query($connexion,$req);
$arr = array();
$i=0;
while($row = mysqli_fetch_assoc($res)){
$new = array(
'idQArivee'.$i = $row.'idQArivee',
'transport'.$i = $row.'transport'
);
array_push($arr, $new);
$i++;
}
if($arr == null){
return null;
}else
return $arr;
}
和功能 array_push()不起作用。 $ row 是一个具有两列 idQArivee 和 transport 的表。我正在尝试将它们插入到数组中。
答案 0 :(得分:2)
在
之后,您的错误似乎缺少;
$new = array(
'idQArivee'.$i = $row.'idQArivee',
'transport'.$i = $row.'transport'
)
您无法连接$row.'idQArivee'
的事实应该是$row['idQArivee']
并与transport
发生同上
因此解决方法是
$new = array(
'idQArivee'.$i => $row['idQArivee'],
'transport'.$i => $row['transport']
);
$arr[] = $row;
或者简单地
$arr[] = array(
'idQArivee'.$i => $row['idQArivee'],
'transport'.$i => $row['transport']
);
其他信息
要即使在LIVE环境中也能避免PHP错误,请将这4行添加到要调试的任何基于
MYSQLI_
的脚本的顶部ini_set('display_errors', 1); ini_set('log_errors',1); error_reporting(E_ALL); mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
。 这将迫使任何MYSQLI_
错误生成一个可以在浏览器上看到的异常以及正常的PHP错误。
答案 1 :(得分:1)
您似乎在数组语句中缺少>
和结尾的分号
例如
$new = array(
'idQArivee'.$i => $row['idQArivee'],
'transport'.$i => $row['transport']
);
我不确定为什么要为每个数组的键分配唯一的值。
根据您将如何使用它们,您可能需要使用...
$arr[] = array(
'idQArivee' => $row['idQArivee'],
'transport' => $row['transport']
);
并按@RiggsFolly提到的那样放弃推送。
答案 2 :(得分:1)
根据您想要的输出,这将追加您的增量(不是一种好方法):
while($row = mysqli_fetch_assoc($res)){
$arr['idQArivee'.$i] = $row['idQArivee'];
$arr['transport'.$i] = $row['transport'];
$i++;
}
但是标准(更好)的方法是拥有一个多维数组:
while($row = mysqli_fetch_assoc($res)){
$arr[] = $row;
}
或者简单地:
while($arr[] = mysqli_fetch_assoc($res));
如果您使用MySQL Native Driver,则只需:
$arr = mysqli_fetch_all($res, MYSQLI_ASSOC);
由于您在查询中指定了所有键,并且您正在获取关联,因此所有这些键仍将为您提供idQArivee
和transport
键。