我遇到关联数组和SQL查询的问题。问题是我有一个查询,它的行存储在这样的数组中:
$query21 = "SELECT PROCESSO, DATAMSG, CATEGORIA_DESC, VALOR, CRITICO FROM TABLEX";
$result21 = oci_parse($connect, $query21);
oci_execute($result21);
$c1=array();
while($res21 = oci_fetch_array($result21)) {
$c1[]=$res21;
}
print_r($c1);
此代码打印出:
Array
(
[0] => Array
(
[0] => 1647306
[PROCESSO] => 1647306
[1] => 2015-04-27 23
[DATAMSG] => 2015-04-27 23
[2] => ECG_HR
[CATEGORIA_DESC] => ECG_HR
[3] => 59
[VALOR] => 59
[4] => 1
[CRITICO] => 1
)
)
问题是我不知道为什么它会重复两次结果。我期待这样的结果:
Array
(
[0] => Array
(
[PROCESSO] => 1647306
[DATAMSG] => 2015-04-27 23
[CATEGORIA_DESC] => ECG_HR
[VALOR] => 59
[CRITICO] => 1
)
)
另外,我如何访问[PROCESSO]
,...,[CRITICO]
键值?我已经尝试但只能访问保存数组的$c1['0']
键,但我需要内部的值。
答案 0 :(得分:2)
因为默认情况下oci_fetch_array()使用OCI_BOTH
抓取模式;这意味着它返回一个包含关联和数字索引的数组。您可以使用...
oci_fetch_array($result21, OCI_ASSOC)
...或者只使用oci_fetch_assoc()。
您也可以考虑完全删除while
并在逐行模式下使用oci_fetch_all():
oci_fetch_all($result21, $c1, null, null, OCI_FETCHSTATEMENT_BY_ROW);
在任何一种情况下,您都可以使用与迭代任何其他数据相同的技术迭代这些数组。例如:
foreach ($c1 as $row) {
foreach ($row as $key => $value) {
echo $key, ' is ', $value, '<br />';
}
}