2013-04-12 3 views
1

Каков эквивалент следующего эквивалентного PDO?Эквивалентный запрос для PDO, как в Mysql

$i=0; 
while ($i < $num_articles){ 
$title=mysql_result($sql_result_article,$i,"Article_Title"); 
$id =mysql_result($sql_result_article,$i,"Article_Id"); 
$i++; 
} 

Я попробовал его с помощью:

$title = $select_spec_article_stmt->fetchColumn(0); 
$nc=$select_spec_article_stmt->fetchColumn(1); 

Но я по-прежнему сталкивается с проблемой, как это не показывает соответствующие записи. Когда я комментирую $title в PDO, он показывает правильные записи для $nc. Любые идеи или предложения?

ответ

3

mysql_result всегда был уродливым способом обработки данных mysql. Пожалуйста, не принимайте этот подход в смелый новый мир PDO.

Даже с mysql ext вы смогли использовать массив. Поэтому вам нужно использовать PDO.
Вам не нужно ни mysql_result, ни num_articles.

Просто получить данные первой:

$data = $stmt->fetchAll(); 

Теперь в цикле Еогеасп вы можете обратиться каждую переменную в качестве элемента массива

<table> 
<? foreach ($data as $row): ?> 
    <tr> 
    <td> 
     <a href="news.php?<?=$row['Article_Id']?>"> 
     <?=htmlspecialchars($row['Article_Title'])?> 
     </a> 
    </td> 
    </tr> 
<? endforeach ?> 

или, если вы хотите придерживаться скалярных переменных, используйте extract():

<table> 
<? foreach ($data as $row): extract($row); ?> 
    <tr> 
    <td> 
     <a href="news.php?<?=$Article_Id?>"> 
     <?=htmlspecialchars($Article_Title)?> 
     </a> 
    </td> 
    </tr> 
<? endforeach ?> 

, если вам не понравились эти фамильные имена пушистых полей - не использовать в базе данных

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