Преобразование этого MySQL_ * в PDO

Когда я начал изучать PHP, я никогда не касался MySQL_, потому что все сказали мне начать с PDO.

Я знаю, что PDO извлечения, выполнения и т. Д. Но я не могу понять, как преобразовать это в PDO:

Это система разбиения на страницы, и немного ее.

// counting the offset $sql = ("SELECT * FROM comments LIMIT $offset, $rowsPerPage"); $res = mysql_query($sql) or die(mysql_error()); // how many rows we have in database $sql2 = "SELECT COUNT(comment_id) AS numrows FROM comments"; $res2 = mysql_query($sql2) or die(mysql_error()); $row2 = mysql_fetch_array($res2); $numrows = $row2['numrows']; // print the random numbers while($row = mysql_fetch_array($res)) { //Echo out your table contents here. echo $row[1].'<BR>'; echo $row[2].'<BR>'; echo '<BR>'; } 

Я понятия не имею, что такое mysql_fetch_array, но похоже, что он похож на PDO :: FETCH, но я не могу его получить.

Может ли кто-нибудь дать мне несколько советов о том, как преобразовать этот MySQL_ в PDO?

Благодарю.

Это полный код:

http://pastebin.com/hg1Cd246

Моя попытка конвертировать:

 // counting the offset $sql = $pdo->prepare("SELECT * FROM comments LIMIT $offset, $rowsPerPage"); $res = $sql->execute(); // how many rows we have in database $sql2 = $pdo->prepare("SELECT COUNT(comment_id) AS numrows FROM comments"); $res2 = $sql2->execute(); $row2 = $res2->fetchAll(); $numrows = $row2['numrows']; // print the random numbers while($row = $res2->fetchAll()) { //Echo out your table contents here. echo $row[1].'<BR>'; echo $row[2].'<BR>'; echo '<BR>'; } 

но получение этой ошибки:

Неустранимая ошибка: вызов функции-члена fetchAll () для не-объекта

эта строка: $ row2 = $ res2-> fetchAll ();

что я сделал не так?

Я понятия не имею, что такое mysql_fetch_array, ну, похоже, он похож на PDO :: FETCH

Ну, mysql_fetch_array – это функция, которая будет извлекать результат (исходящий из mysql_query ) в массив. PDO::FETCH_* вместо этого является семейством констант .


Может ли кто-нибудь дать мне несколько советов о том, как преобразовать этот MySQL_ в PDO?

Я не хочу казаться грубым, но вы должны обязательно RTM: вы можете легко найти правильную документацию и примеры .


Выполняет ли fetchAll () ту же работу, что и mysql_fetch_array?

Вы можете посмотреть как документацию для mysql_fetch_array и PDOStatament::fetchAll чтобы ответить на это самостоятельно. Просто чтобы вы заметили: на странице связанной документации для mysql_fetch_array он явно говорит:

Альтернативы этой функции включают: […] PDOStatement :: fetch ()


Я получаю эту ошибку: Неустранимая ошибка: вызов функции-члена fetchAll () для объекта без объекта

Эта:

 $res2 = $sql2->execute(); $row2 = $res2->fetchAll(); 

Вызывает эту ошибку, потому что execute() возвращает логическое значение. Чтобы получить результаты через fetchAll() вы должны называть его PDOStatament (в вашем случае $sql2 ). Это правильный код:

 $sql2->execute(); $row2 = $sql2->fetchAll(); 

Согласно вашему коду, вы используете mysql_fetch_array и заполняете его именем столбца в своей базе данных:

 **$row2** = mysql_fetch_array($res2); $numrows = **$row2['numrows']**; 

Вы можете использовать PDO::FETCH_ASSOC чтобы продолжить использование имен столбца и в дополнение к этому вы можете использовать числовое значение столбцов (1-й столбец – номер 0, 2-й столбец 1 и т. Д.).

Я не очень часто встречаюсь с PDO, поэтому, пожалуйста, посмотрите на ответы других людей. Кроме того, я также настоятельно рекомендую вам взглянуть на то, какие способы вы можете использовать для извлечения данных из вашей базы данных (_rows, _assoc, _array и т. Д.). Там есть чему поучиться 🙂