与Mysql中的PDO等效查询

时间:2013-04-12 11:22:28

标签: mysql pdo

以下等效PDO的等价物是什么?

$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);

但我仍然面临一个问题,因为它没有显示正确的记录。当我在PDO中评论$title时,会显示$nc的正确记录。任何想法或建议?

1 个答案:

答案 0 :(得分:3)

mysql_result一直是处理mysql数据的最丑陋方式。请不要把这种方法带入PDO这个勇敢的新世界。

即使使用mysql ext,您也可以使用数组。所以你必须使用PDO 您既不需要mysql_result也不需要num_articles.

首先获取您的数据:

$data = $stmt->fetchAll();

现在在foreach循环中,您可以将每个变量作为数组成员来解决

<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 ?>

如果您不喜欢这些花哨的浓密字段名称 - 请勿在数据库中使用