php - 相当于 mysql_fetch_array 的 PDO

标签 php mysql arrays pdo

我正在努力处理 PDO 等效于以下查询,该查询计算队列中有多少新项目并计算出完成它们需要多少周,从而为我提供工作堆栈时间尺度:-

//count new to be made
$new = "SELECT FLOOR(SUM(TotalNew) / 7) AS Weeks FROM 
(
SELECT YEAR( date_ready ) , MONTHNAME( date_ready ) , 
STATUS , COUNT( 
STATUS ) AS TotalNew
FROM new
WHERE 
(STATUS =  'new'
OR STATUS =  'progress') 
GROUP BY YEAR( date_ready ) , MONTHNAME( date_ready ) , 
STATUS ORDER BY YEAR( date_ready ) , MONTH( date_ready ) 
) Total";
$count = mysql_query($new) or die(mysql_error());

while($row = mysql_fetch_array($count)) {
$weeks = $row['Weeks'];
}

我要做的是......

//count new to be made 
$new = "SELECT FLOOR(SUM(TotalNew) / 7) AS Weeks FROM 
(
SELECT YEAR( date_ready ) , MONTHNAME( date_ready ) , 
STATUS , COUNT( 
STATUS ) AS TotalNew
FROM new
WHERE 
(STATUS =  'new'
OR STATUS =  'progress') 
GROUP BY YEAR( date_ready ) , MONTHNAME( date_ready ) , 
STATUS ORDER BY YEAR( date_ready ) , MONTH( date_ready ) 
) Total";


//get count data fromdb
$stmt = $dbLink->prepare($new);
$stmt->execute();

如果我添加 $count = $stmt->fetchAll();

并转储变量,我得到 array(1) { [0]=> array(2) { ["Weeks"]=> string(2) "16"[0]=> string(2) "16"} }

如果我更换

$count = $stmt->fetchAll();

while ($row = $stmt->fetchAll())  {
echo "about to print";
echo "<br>";
print_r($row);
echo "<br>";
echo $row['Weeks'];
echo "<br>";
echo "printed";
}

我得到数组的不同变体 - Array ( [0] => Array ( [Weeks] => 16 [0] => 16 ) ),但不是我想要的输出,它是与 Weeks 相关的数字查询。我已经尝试使用各种 echo/print_r 进行错误检查,以尝试查看输出与预期输出匹配的位置。

查询工作正常,原来的 mysql_query 版本也工作,所以我显然误解了 PDO 如何处理数组以及如何从数组中提取项目。

我看过 How to use PDO to fetch results array in PHP?how to properly use while loop in PDO fetchAll 并尝试了各种组合无济于事。老实说,即使某些事情随机发生,我也更愿意知道原因并开始质疑我对数组的理解。

一如既往,请给我一两个指点,我将不胜感激?

非常感谢, 杰森

最佳答案

我想你正在寻找:

while($row = $stmt->fetch(/* PDO::FETCH_ASSOC */)) {
    // do loop stuff
}

PDO::fetchAll() 返回所有查询结果的关联数组(二维数组)。根据 PHP 文档,不建议将此用于大型结果集。 PDO::fetch() 仅返回结果集中的一行并模仿 mysql_fetch_array()。参见 http://php.net/manual/en/function.mysql-fetch-array.php了解更多详情。

关于php - 相当于 mysql_fetch_array 的 PDO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26142444/

相关文章:

在 C 中将字节转换为 Int/uint

Ruby - 从数组中打印一个值

javascript - 如何遍历多维 JSON 数据并将相应的值传递给函数调用

javascript - 如何在 JavaScript 中获取 HTTP 回复?

PHP MySQL 表连接 - 仅回显标识符一次,然后是所有匹配的项目

mysql - 如何使用虚拟实体数据预填充数据库?

mysql - R SQL : Pull data from MySQL for list of ids already in a dataframe

php - MYSQL 连接查询问题

php - 如何在自定义 PDO 查询中转义 'LIKE' 语句

php - 基于 URL 生成动态元标记