Я борюсь с эквивалентом 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 ();
и дамп переменной, я получаю массив (1) {[0] => массив (2) {["Недели"] => строка (2) "16" [0] => строка (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 из запроса. Я попробовал проверку ошибок с помощью различных эхо / print_r, чтобы попытаться увидеть, где выходные данные соответствуют ожидаемому результату.
Запрос работает отлично, и исходная версия mysql_query также работает, поэтому я, очевидно, не понимаю, как PDO обрабатывает массивы и как вытаскивать элемент из массива.
Я посмотрел, как использовать PDO для получения массива результатов в PHP? и как правильно использовать цикл while в PDO fetchAll и пробовать различные комбинации безрезультатно. Честно говоря, даже если бы что-то случайно работало, я бы предпочел знать, почему и начинаю сомневаться в моем понимании массивов.
Как всегда, я был бы благодарен за указатель или два, пожалуйста?
Большое спасибо, Джейсон