此问题与上一个问题相关:PDO, MySQL - How do I return an array from a function?
但我觉得它不够具体。
我想在数组中返回自己键中的每一行变量,这样我就可以在调用程序中使用它们。
这是我到目前为止的代码,但我不确定它是否正确,甚至是朝着正确的方向发展:
$total = $dbh->prepare("SELECT COUNT(post_id) FROM mjbox_posts");
$stmt = $dbh->prepare("SELECT * FROM mjbox_images JOIN mjbox_posts USING (post_id) WHERE post_id = ?");
$stmt->bindParam(1,$post_id);
$stmt->execute();
$resultarray = array();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
for($i=0;$i<=$total;$i++){
$resultarray[] = array("id"=>$row['img_id'],"filename"=>$row['img_file_name']);
}
}
return $resultarray;
看来数据确实被插入到数组中并传回给调用程序,但它似乎在数组中复制了两个数据:
Array ( [0] => Array ( [0] => Array ( [id] => 5 [filename] => fullsize/8520430289728860armor.jpg ) [1] => Array ( [id] => 5 [filename] => fullsize/8520430289728860armor.jpg ) [2] => Array ( [id] => 6 [filename] => fullsize/5535575154865203bg1.jpg ) [3] => Array ( [id] => 6 [filename] => fullsize/5535575154865203bg1.jpg ) [4] => Array ( [id] => 7 [filename] => fullsize/7598226850012898images.jpg ) [5] => Array ( [id] => 7 [filename] => fullsize/7598226850012898images.jpg ) ) )
答案 0 :(得分:2)
该代码被破坏了。 $total
将是一个mysql预处理语句句柄,但是你在内部for(...)
循环中使用它进行整数比较。
当您只需要将两个字段保存到数组中时,您的其他查询会通过获取表中的所有字段来浪费大量资源。
将这些混乱简化为:
查询:
SELECT img_id AS id, img_file_name AS filename etc....
PHP:
$resultarray = array();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$resultarray[] = $row;
}