2013-04-16 4 views
-4

Когда я начал изучать PHP, я никогда не касался MySQL_, потому что все говорили мне начать с PDO.Преобразование этого 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 () по необъекту

этот линь e: $ row2 = $ res2-> fetchAll();

какой я сделал неправильно?

+5

О, смотрите, руководство! http://php.net/mysql_fetch_array – deceze

+0

'Я не знаю, что такое mysql_fetch_array' - это плохая новость. –

+0

«mysql_fetch_array» «точно» совпадает с [PDO :: fetch()] (http://www.php.net/manual/en/pdostatement.fetch.php) со стилем 'PDO :: FETCH_NUM'. – Voitcus

ответ

4

I have no idea what mysql_fetch_array is, well it looks similar to the PDO::FETCH

Ну, mysql_fetch_array является function, что будет получать результат (исходя из mysql_query) в массив. PDO::FETCH_* вместо этого - family of constants.


Can some one give me a few hints on how to convert this MySQL_ to PDO?

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


Does fetchAll() does the same work as mysql_fetch_array ?

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

Alternatives to this function include: [...] PDOStatement::fetch()


I'm getting this error: Fatal error: Call to a member function fetchAll() on a non-object

Это:

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

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

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

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

+0

@ user2286576, вы можете посмотреть как документацию для ['mysql_fetch_array'] (http://php.net/manual/en/function.mysql-fetch-array.php), так и [' PDOStatament :: fetchAll' ] (http://php.net/manual/en/pdostatement.fetchall.php), чтобы ответить на это самостоятельно. – Shoe

+0

Отредактированный вопрос можно посмотреть, пожалуйста, – user2286576

0

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

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

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

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

Смежные вопросы