【问题标题】:PDO, MySQL Insert fetched data into an arrayPDO,MySQL 将获取的数据插入到数组中
【发布时间】:2012-06-09 18:28:00
【问题描述】:

这个问题和上一个问题有关: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 ) ) )

【问题讨论】:

  • 我不确定for() 循环的用途;你可能只需要while()就可以了。

标签: mysql arrays for-loop pdo return


【解决方案1】:

该代码已损坏。 $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;
}

【讨论】:

  • 谢谢。只是出于兴趣,我如何能够从 PDO 中的准备好的语句中获取 $total 的整数值?
  • @crm 您希望它有什么价值?你的意思是查询执行后的行数吗?
  • 是的,返回的行数。 Doh 只要你说 rowCount 它就点击了。还在学习PDO。谢谢
猜你喜欢
  • 2013-11-17
  • 2017-07-03
  • 1970-01-01
  • 2016-05-28
  • 2014-04-17
  • 1970-01-01
  • 1970-01-01
  • 2017-09-28
  • 1970-01-01
相关资源
最近更新 更多