从mysql查询中选择行并将其保存到变量

从mysql查询中选择行并将其保存到变量,mysql,pdo,Mysql,Pdo,如何从mysql查询中选择一行并使用PDO将其保存到变量?以前我是这样做的 $row = mysql_fetch_array($result); $ID = $row['ID']; 现在我从PHP手册中读到,PDOStatement::fetch()是mysql\u fetch\u array的替代品,但我不知道如何使用它。这是我尝试过的,但显然不起作用 <?php include 'config.php'; $sql = "select * from table1"; tr

如何从mysql查询中选择一行并使用PDO将其保存到变量?以前我是这样做的

$row = mysql_fetch_array($result);

  $ID = $row['ID'];
现在我从PHP手册中读到,
PDOStatement::fetch()
mysql\u fetch\u array
的替代品,但我不知道如何使用它。这是我尝试过的,但显然不起作用

 <?php
include 'config.php';

$sql = "select * from table1";

try {
    $dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);  
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $dbh->query($sql);  
    $result = $stmt->fetchAll(PDO::FETCH_OBJ);
    $dbh = null;
    echo '{"items":'. json_encode($result) .'}'; 
} catch(PDOException $e) {
    echo '{"error":{"text":'. $e->getMessage() .'}}'; 
}

$row = $stmt->fetchAll(PDO::FETCH_OBJ);
  $ID = $row['ID'];


?>

如果使用的是
PDO::FETCH_OBJ
,则必须使用对象表示法来检索结果中的元素。由于您已经调用了
fetchAll()
方法,因此以后无法调用另一个fetch/fetchAll方法,因为数据将不再可访问

代替
$row=$stmt->fetchAll(PDO::FETCH_OBJ)
,迭代先前使用的
fetchAll()
返回到的
$result
变量:

foreach($result as $row)
{
    $ID = $row->ID;
    // Etc...
}

当我尝试回显$ID时,它会给我错误
未定义变量:
@user1323294,去掉
$result=$stmt->fetchAll(PDO::FETCH_OBJ)try
块中的code>行。原因是,在
fetchAll()
之后,您将无法访问数据。但如果我使用
$result=$stmt->fetchAll(PDO::FETCH_OBJ)
它将“null”显示为
json\u encode($result)
,对吗?你能在我的帖子里提供一个完整的代码样本吗。