所以我把一些代码整合在一起试图在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'中的值,但没有任何内容出现。
我错过了什么?
答案 0 :(得分:1)
PDO::fetchAll
返回一个结果数组,即一组关联数组。您可能希望改为使用PDO::fetch
。
答案 1 :(得分:0)
返回数组中的多行: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();