PDO准备语句 - 查看查询结果

时间:2013-05-24 07:55:50

标签: php mysql prepared-statement

所以我把一些代码整合在一起试图在php / mysql中编写一个准备好的PDO语句。

一切都在运行,因为页面没有被淘汰,但我似乎无法将查询的结果拉到html中的'echo',我不知道我错过了什么。

这是<head>之前的代码:

try {  
    # MySQL with PDO_MYSQL  
    $pdo = new PDO("mysql:host=$hostname_db;dbname=$database_db", $username_db, $password_db);  
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

    // writ the query
    $stmt = $pdo->prepare('SELECT * FROM table WHERE id = ?');  
    $stmt -> execute(array($rid));
    $row_count = $stmt->rowCount();
    $results = $stmt->fetchAll(PDO::FETCH_ASSOC);

}  
// Error message for pdo
catch(PDOException $e) {  
    echo $e->getMessage();  
}  

然后在页面的html中,我试图查看这样的结果:

<body>
<p>Hello</p>
<p><?php echo $results['field1']; echo ', row count: '.$row_count;?></p>
</body>

$ row_count正确地输入为1,但我试图调用'field1'中的值,但没有任何内容出现。

我错过了什么?

3 个答案:

答案 0 :(得分:1)

PDO::fetchAll返回一个结果数组,即一组关联数组。您可能希望改为使用PDO::fetch

答案 1 :(得分:0)

fetchall docs

返回数组中的多行:array(row_1, row_2)

他们自己的行也是数组。

因此,您尝试访问不存在的行。所以你应该使用fetch或foreach

取:

$results = $stmt->fetch(PDO::FETCH_ASSOC);

FOREACH:

foreach($results as $result){ 
  echo $result['field_1'];
}

答案 2 :(得分:0)

更改: -

$results = $stmt->fetchAll(PDO::FETCH_ASSOC);

$results = $stmt->fetch();