OOP-PDO |
标题 | 副标题 | 解释 | 备注 |
什么是PDO? | | PDO[PHP Data
Objects],PHP数据对象,PDO是能够访问各种数据库
引擎的统一接口,而且提供SQL语句的预处理功能,可以提高访问效率且能有效防止SQL注入攻击。 | |
2.安装 | | A.编辑PHP的配置文件 -- php.ini
B.启用extension=php_pdo_mysql.dll选项
C.编辑extension_dir选项,指定扩展文件的目录
D.保存设置后,重新启动Apache | |
| | | |
| | 1.创建PDO对象
$object = new PDO(string
$dsn[,string $username[,string $password]]) | |
| | 2.DSN
DSN[DataSource
Name],数据源名称
MySQL DSN写法:
mysql:host=主机名称;dbname=数据库名称;port=端口;charset=编码方式 | |
3.方法 | exec() | 描述:执行SQL查询,并且返回被影响到的行数
语法:int PDO::exec(string
$sql) | |
| lastInsertId() | 描述:返回最后插入记录的ID号
语法:string PDO::lastInsertId([string
$name=NULL]) | |
| query() | query()
描述:执行SQL查询,并且将查询结果集作为PDOStatement对象返回
语法:PDOStatement PDO::query(string
$sql) | |
| prepare() | prepare()
描述:事先准备SQL语句的预处理,并且返回PDOStatment对象
语法:PDOStatement PDO::prepare(string
$sql)
说明:
A.SQL语句中不确定的信息,如字段值,条件等使用占位符表示
B.SQL语句中的占位符无需用引号处理 | prepare[peipeier]:准备 |
4.占位符 | | | |
5.SQL的预处理 | SQL语句的执行过程: | SQL语句的执行过程:
A.数据库引擎将对SQL语句进行语法分析;
B.进行SQL语句的编译过程;
C.执行编译的代码;
D.将执行的结果返回给用户 | |
| 预处理的基本思想是: | 预处理的基本思想是:
在第一次执行SQL查询时要经历语法分析、编译等过程,在编译成功后,
会将编译的结果存储起来,以后再次执行时,只要直接执行以前的编译结果
就可以了,这样可以有效减少数据库服务器的压力。 | |
三、PDOStatement类 | rowCount() | rowCount()
描述:返回由上一条SQL查询语句所影响到行数(提示:SQL可以为任意的SQL语句)
语法:int
PDOStatement::rowCount(void) | |
| fetchAll() | fetchAll()
描述:抽取结果集中的全部记录作为数组返回
语法:array PDOStatement::fetchAll([int
$fetch_style=PDO::FETCH_BOTH])
说明:
A.$fetch_style参数用于指定数组的类型,其值可以为:
PDO::FETCH_ASSOC,其值为2,代表返回关联数组
PDO::FETCH_NUM,其值为3,代表返回索引数组
PDO::FETCH_BOTH,其值为4,代表同时返回关联数组和索引数组(默认)
PDO::FETCH_OBJ,其值为5,代表返回对象(默认stdClass类型) | |
| setFetchMode() | setFetchMode()
描述:设置结果集的匹配类型
语法:bool
PDOStatement::setFetchMode(int $fetch_mode) | |
| fetch() | fetch()
描述:抽取结果集的一行返回,如果没有更多的行,则返回FALSE
语法:mixed PDO::fetch([int
$fetch_style=PDO::FETCH_BOTH]) | |
| fetchObject() | fetchObject()
描述:抽取结果集的一行作用对象返回,如果没有更多的行,则返回FALSE
语法:object PDO::fetchObject([string
$class_name]) | |
| execute() | execute()
描述:执行预处理的SQL语句
语法:bool PDOStatement::execute([array
$param])
说明:
A.如果预处理SQL语句不确定信息使用问号占位符表示,则$param参数需要使用索引数组呈现
B.如果预处理SQL语句不确定信息使用问号命名占位符表示,则$param参数需要使用关联数组呈现 | execute[xkoute]:执行 |
| bindValue() | bindValue()
描述:为预处理SQL语句的占位符参数绑定值
语法:bool
PDOStatement::bindValue(mixed $parameter,mixed $value[,int
$data_type=PDO::PARAM_STR)]) 说明:
A.如果通过bindValue()方法将SQL语句的占位符参数绑定了值,那么在执行时(execute()方法)时,就可以省略$param参数;
B.问号占位符从1开始编号;命名占位符参数的名称就是命名占位符;
C.$data_type参数用于指定数据类型,其值可能为:
PDO::PARAM_NULL,其值为0,代表为空值
PDO::PARAM_INT,其值为1,代表整型
PDO::PARAM_STR,其值为2,代表字符型(默认)
PDO::PARAM_BOOL,其值5,代表布尔型 | |
| bindParam() | bindParam()
描述:为预处理SQL语句的占位符参数绑定到变量
语法:bool
PDOStatement::bindParam(mixed $parameter,mixed &$var[,int
$data_type=PDO::PARAM_STR)])
说明:
A.问号占位符从1开始编号;命名占位符参数的名称就是命名占位符; | |