【发布时间】:2015-12-16 18:03:27
【问题描述】:
我有 2 个数组:
$arr = [];
$tempArray = [
'val1' => "xxx",
'val2' => 0,
'val3' => 0
];
然后在我的 mysql 查询中,我用当前行中的值填充临时数组,最后将他推入 $arr:
$stmt->bind_result($tempArray["val1"], $tempArray["val2"], $tempArray["val3"]);
while ( $stmt->fetch () ) {
array_push($arr, $tempArray);
}
问题是,在每个循环中,“array_push”都会覆盖$arr 中的数据。
例如我在$stmt->fetch()中循环了3次。
1.循环
$tempArray = [
'val1' => "Hello",
'val2' => 1,
'val3' => 2
]
$arr = [
0 = [
'val1' => "Hello",
'val2' => 1,
'val3' => 2
];
]
2。循环
$tempArray = [
'val1' => "Stack",
'val2' => 3,
'val3' => 4
]
$arr = [
0 = [
'val1' => "Stack",
'val2' => 3,
'val3' => 4
],
1 = [
'val1' => "Stack",
'val2' => 3,
'val3' => 4
];
]
3.循环
$tempArray = [
'val1' => "Overflow",
'val2' => 5,
'val3' => 6
]
$arr = [
0 = [
'val1' => "Overflow",
'val2' => 5,
'val3' => 6
],
1 = [
'val1' => "Overflow",
'val2' => 5,
'val3' => 6
],
2 = [
'val1' => "Overflow",
'val2' => 5,
'val3' => 6
]
]
我以前从未见过这种行为,也不知道为什么会这样。
最后我想要的是:
$arr = [
0 = [
'val1' => "Hello",
'val2' => 1,
'val3' => 2
],
1 = [
'val1' => "Stack",
'val2' => 3,
'val3' => 4
],
2 = [
'val1' => "Overflow",
'val2' => 5,
'val3' => 6
]
]
$stmt 类(从@Stevish 请求)
$query = "...";
if ( $stmt = $this->db->prepare($query)) {
$stmt->bind_param('i', $xxx);
$stmt->execute();
$stmt->store_result();
$$stmt->bind_result($tempArray["val1"], $tempArray["val2"], $tempArray["val3"]);
while ( $stmt->fetch () ) {
$arr[] = $tempArr;
}
}
【问题讨论】: