<?php
//开始创建PDO对象
$dsn = "mysql:host=localhost;dbname=test";
$username = "root";
$password = "111111";
$db = new PDO($dsn, $username, $password);
//print_r($db);打印是一个资源
//默认这个不是长连接,如果需要数据库长连接,需要最后加一个参数:array(PDO::ATTR_PERSISTENT => true) 变成这样:
//$db = new PDO($dsn, 'root', '', array(PDO::ATTR_PERSISTENT => true));
//查询数据
//$db->query()方法来查询数据
//获取全部数据
$rs = $db->query("select * from pdo_test");
while($row = $rs->fetch()){
//print_r($row);
}
//或者用以下方式也可以
$rs = $db->query("select * from pdo_test");
$row = $rs->fetchAll();
//print_r($row);
打印结果如图
//我们看里面的记录,数字索引和关联索引都有,浪费资源,我们只需要关联索引的:实例代码如下
$db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER);
$rs = $db->query("SELECT * FROM pdo_test");
$rs->setFetchMode(PDO::FETCH_ASSOC);
$result_arr = $rs->fetchAll();
print_r($result_arr);
//setAttribute() 方法是设置部分属性,主要属性如下:
//PDO::CASE_LOWER -- 强制列名是小写
//PDO::CASE_NATURAL -- 列名按照原始的方式
//PDO::CASE_UPPER -- 强制列名为大写
//setFetchMode方法来设置获取结果集的返回值的类型,同样类型还有:
//PDO::FETCH_ASSOC -- 关联数组形式
//PDO::FETCH_NUM -- 数字索引数组形式
//PDO::FETCH_BOTH -- 两者数组形式都有,这是缺省的
//PDO::FETCH_OBJ -- 按照对象的形式,类似于以前的 mysql_fetch_object()
//添加数据
//$sql = "insert into pdo_test (username,password) values ('heihei','123456'),('heihei','123456')";
//print_r($pdo->exec($sql));//打印是返回执行这条语句影响的行数返回int型数据
//批量插入多条语句,可以用语句预执行,形成执行模板
$sql ="insert into pdo_test (username,password) values (?,?)";
//先准备,接下来我将执行一大批类似的语句
$sta = $db->prepare($sql);
for($i=1;$i<=10;$i++){
$arr = array('username'.$i,'password'.$i);
$sta->execute($arr);
}
【总结】
//查询操作主要是PDO::query()、PDO::exec()、PDO::prepare()。PDO::query()主要是用于有记录结果返回的操作,特别是SELECT操作,PDO::exec()主要是针对没有结果集合返回的操作,比如INSERT、UPDATE、DELETE等操作,它返回的结果是当前操作影响的列数。PDO::prepare()主要是预处理操作,需要通过$rs->execute()来执行预处理里面的SQL语句,这个方法可以绑定参数,功能比较强大,不是本文能够简单说明白的,大家可以参考手册和其他文档。
//获取结果集操作主要是:PDOStatement::fetchColumn()、PDOStatement::fetch()、PDOStatement::fetchALL()。PDOStatement::fetchColumn() 是获取结果指定第一条记录的某个字段,缺省是第一个字段。PDOStatement::fetch() 是用来获取一条记录,PDOStatement::fetchAll()是获取所有记录集到一个中,获取结果可以通过PDOStatement::setFetchMode来设置需要结果集合的类型。
//另外有两个周边的操作,一个是PDO::lastInsertId()和PDOStatement::rowCount()。PDO::lastInsertId()是返回上次插入操作,主键列类型是自增的最后的自增ID。PDOStatement::rowCount()主要是用于PDO::query()和PDO::prepare()进行DELETE、INSERT、UPDATE操作影响的结果集,对PDO::exec()方法和SELECT操作无效
?>