PDO中的结果集对象方法
方法名 | 注释 |
---|---|
execute() | 执行一条预处理语句 |
rowCount() | 返回上一个SQL语句影响的行数 |
fetch() | 从结果集中获取一行 |
fetchAll() | 返回一个包含结果集中所有行的数组 |
setFetchMode() | 为语句设置默认的获取模式 |
fetchColumn() | 从结果集中的下一行返回单独的一列 |
fetchObject() | 获取下一行并作为一个对象返回 |
bindParam() | 绑定一个参数到指定的变量名 |
bindValue() | 把一个值绑定到一个参数 |
这个跟mysqli中的mysqli_fetch_array()这些方法基本都是相同的功能,只是在不同形式下的不同实现和不同方式的调用而已,返回的数据结果都是一样的
预处理形式的SQL查询
$sql = "select * from users where name = '小明';";
准备一个预处理语句,方法执行完毕后返回的是一个PDO的stmt对象(PDOStatement 对象)
prepare方法是用来准备一条预处理语句的方法
$stmt = $pdo->prepare($sql);
execute方法是用来执行预处理语句的,执行成功返回bool的true
$res = $stmt->execute();
拿数据是通过PDOStatement对象中对的一些方法去获取数据
示例:
if ($res){
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
print_r($row);
echo '<br/>';
}
}else{
echo '预处理语句执行失败';
}
取出数据的格式,例如返回的是索引还是关联数组,你可以直接在获取数据的方法中传入PDO这个类的常量,有很多个常量值,具体的自己百度查
取出的数据格式,例如返回的是索引数组还是关联数组,可以通过PDOStatement中的setFetchMode()方法来进行设置
$stmt->setFetchMode(PDO::FETCH_BOTH);这里设置默认索引和关联一起返回
设置数据库连接属性
- 数据库连接属性指的是例如自动提交、持久连接等
代码示例:
在实例化PDO类的时候,可以通过第四个参数直接设置数据库连接属性
$options = array(
PDO::ATTR_AUTOCOMMIT=>0,
PDO::ATTR_ERRMODE=>0
);
$pdo = new PDO('mysql:host=localhost;dbname=pdotest;','root','',$options);
$pdo->query('set names utf8;');
获取获取数据库连接属性:
echo '自动提交功能状态:' . $pdo->getAttribute(PDO::ATTR_AUTOCOMMIT);
echo '<br/>';
echo 'PDO的错误处理模式:' . $pdo->getAttribute(PDO::ATTR_ERRMODE);
echo '<br/>';
设置数据库连接属性:
$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,0);
echo '关闭自动提交';
echo '<br/>';
echo '自动提交功能状态:' . $pdo->getAttribute(PDO::ATTR_AUTOCOMMIT);
echo '<br/>';
$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,1);
echo '开启自动提交';
echo '<br/>';
echo '自动提交功能状态:' . $pdo->getAttribute(PDO::ATTR_AUTOCOMMIT);
echo '<hr/>';
如何配置常用的数据库连接属性,示例:
$attrArr = array(
'AUTOCOMMIT','ERRMODE','CASE','PERSISTENT','TIMEOUT','ORACLE_NULLS',
'SERVER_INFO','SERVER_VERSION','CLIENT_VERSION','CONNECTION_STATUS'
);
foreach ($attrArr as $attr){
echo "PDO_ATTR_{$attr}:";
//constant()函数是返回一个常量的值
echo @$pdo->getAttribute(constant("PDO::ATTR_{$attr}"));
echo '<br/>';
}
数据库连接属性其实没多少东西,主要就是在初始化项目的时候,对数据库的一些连接的属性进行一些项目化的设置,具体的看项目需求进行设置