我正在开发一个拥有这种代码的项目:
<?php
$dbsecteurs = dbselect("SELECT * FROM SUP_SECTEURS WHERE ID_SECTEUR > 1 ORDER BY NOM_SECTEUR ASC");
foreach ($dbsecteurs as $dbsecteur) {
echo $dbsecteur[0];
}
}
?>
因此这些行由索引引导。有时,值会像$dbsecteur['id']
一样被访问。我必须更新PHP的版本。这是dbselect函数:
function dbselect($strquery) {
global $diag;
$linkID = dbconnect("NORMAL");
if($diag==1) {
echo($strquery."<br>");
}
$result= oci_parse($linkID,$strquery);
}
我不知道为什么,但我有这个错误PHP Warning: Invalid argument supplied for foreach() in C:\inetpub\wwwroot\surtemps_dev\admin\login.php on line 147
。所以我将函数的代码更改为:
function dbselect($strquery) {
global $diag;
$linkID = dbconnect("NORMAL");
if($diag==1) {
echo($strquery."<br>");
}
$stdid = oci_parse($linkID,$strquery);
oci_execute($stdid);
oci_fetch_all($stdid, $result, null, null, OCI_FETCHSTATEMENT_BY_ROW+OCI_NUM);
return $result;
}
适用于索引但不是键访问的值。如果我删除OCI_NUM
,我可以通过密钥访问,但我无法访问这两个。
有没有办法按密钥和索引访问同一个数组?
答案 0 :(得分:0)
是
return $result;
将该行更改为:
return array_merge($result,array_values($result));
答案 1 :(得分:0)
最后,我找到了解决方案。这是新功能:
function dbselect($strquery) {
global $diag;
$linkID = dbconnect("NORMAL");
if($diag==1) {
echo($strquery."<br>");
}
$result = oci_parse($linkID,$strquery);
oci_execute($result,OCI_DEFAULT);
$matrix=array();
$i=0;
while ($row = oci_fetch_array($result)) {
array_push($matrix,array());
$matrix[$i]=$row;
$i++;
}
dbclose($linkID);
return $matrix;
}