如何将这个有效的mysql语句有效地转换为PDO? [英] How can I convert this working mysql statement to PDO effectively?

查看:120
本文介绍了如何将这个有效的mysql语句有效地转换为PDO?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试转换为使用PDO,但似乎无法从我的PDO while循环中获得结果.

I'm trying to convert to using PDO, but can't seem to get results from my PDO while loop.

此mysql语句给我结果:

This mysql statement gives me results:

$q = mysql_query("SELECT * FROM artist ORDER BY artist ASC");
while ($row = mysql_fetch_array($q)) {
  $theartist .= '<option value="'.($row['artist_id']).'">'.($row['artist'])."</option>";
}    

PDO数据库连接(似乎有效)

PDO database connection (that appears to work)

//the below isn't throwing any errors
$host='localhost';
$dbname='james_test';
$user='test';
$pass='testpass';

try {
  # MySQL with PDO_MYSQL
  $DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
}
catch(PDOException $e) {
    echo $e->getMessage();
}

此PDO语句没有给我任何结果:

This PDO statement does not give me any results:

$query = $DBH->prepare("SELECT * FROM artist ORDER BY artist ASC");
while($row = $query->fetch(PDO::FETCH_ASSOC)) {
    $theartist .= '<option value="'.($row['artist_id']).'">'.($row['artist'])."</option>";
}

推荐答案

这只是通过稍微更改代码即可使其工作.

This just makes it work by slightly changing your code.




//$query = $DBH->prepare("SELECT * FROM artist ORDER BY artist ASC");
$rows = $DBH->query("SELECT * FROM artist ORDER BY artist ASC");

//while($row = $query->fetch(PDO::FETCH_ASSOC)) {
if ($rows) {
  foreach ($rows as $row) {
      $theartist .= ''.($row['artist'])."";
  }
}

修改: 查询函数可以一次性完成准备和执行,如果您没有要在查询中使用的变量,该函数将非常有用.

The query function does both prepare and execute in one go and is useful if you don't have variables to use in the query.

这篇关于如何将这个有效的mysql语句有效地转换为PDO?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆