实现了pdo连接数据库之后
就可以去实现对数据库的查询了
没有占位符的 SQL 可以使用 PDO::query() 执行
这里返回的是PDOStatement
因此可以使用PDOStatement相关方法对结果进行处理
本次为不安全的查询方式,不安全表示会被sql注入
返回值为1
使用fetch抓取一个结果
默认的模式为 PDO::FETCH_BOTH
PDO::FETCH_ASSOC表示以键值对的方法反馈数据库查询结果
(除了PDO::FETCH_ASSOC返回键值对 (返回array)
还有FETCH_BOTH既能返回键值对,又返回索引关系 (返回array)
PDO::FETCH_NUM只返回索引关系(返回array)
FETCH_LAZY则会返回一个对象 (返回object)
)
<?php
require_once("dbh.php");
$stmt = $pdo->query('SELECT * FROM bmi');
$result = $stmt->fetch(PDO::FETCH_ASSOC);
print_r($result);
当然上面的语句实际上并非为1,而是一堆数据则参考如下命令
返回值为多个
1.使用fetch循环
通过添加while循环的方式,同样可以做到对所有结果的返回
<?php
require_once("dbh.php");
$stmt = $pdo->query('SELECT * FROM bmi');
while($result = $stmt->fetch(PDO::FETCH_ASSOC)){
print_r($result);
}
2.使用fetchAll方法
fetchAll使用方法与fetch类似,模式也相同
<?php
require_once("dbh.php");
$stmt = $pdo->query('SELECT * FROM bmi');
$result = $stmt->fetchAll();
print_r($result);
最好对sql语言添加限制,不然会消耗大量流量去获取数据库的信息
与其获取完信息再筛选,不如直接在数据库筛选
设置模式的另外一种方式
<?php
$stmt = $dbh->query('SELECT name, colour, calories FROM fruit');
$stmt->setFetchMode(PDO::FETCH_NUM);
如上面代码,完全可以通过setFetchMode预先配置好模式
文章评论