一、PDO诞生的意义 PHP对数据库支持的抽象度不够,接口不统一。每一种数据库环境都必须重新定义数据库的操作。在这种背景下,统一操作接口PDO诞生了。...统一抽象接口,更类似于mysqli 二、PDO常用函数 PDO中包含三个预定义类:PDO、PDOStatement和PDOException (1)PDO类中的常用方法有: beginTransaction...三、PDO预编译和参数绑定 预编译: <?...3.使用PDO参数绑定防范SQL注入 PDO的参数绑定就是防范SQL注入的一种好办法。 其函数原型为: <?...六、PDO的效率问题 PDO比mysql、mysqli的连接更为稳定,但在效率上却不一定比直连更好。而且在实际应用中,数据库迁移的情况不是很多,PDO更无法保证一次编写,到处运行。
问题描述 我自己以swoole扩展为基础,封装了一个异步任务服务器框架,数据库操作使用pdo扩展,但是在插入数据的时候,出现了异常情况,具体状况如下: MyISAM 表引擎的insert正常插入,没有问题...status; 没有发现异常 到这里,已经有些抓狂了 然后google,各种尝试,都不得要领 柳暗花明 纠结了挺长时间,后来看到有人说innodb引擎把insert当作一个事物处理,瞬间想到了一个问题,是不是pdo...直接写了个简单的mysql pdo 连接数据库,并且插入数据到innodb表里面,结果没有任何问题,成功了,然后我就想到pdo里面有个参数PDO::ATTR_AUTOCOMMIT,是不是他在作怪?...使用getAttribute(PDO::ATTR_AUTOCOMMIT)) 获取他的值,打印,发现是1,证明是自动提交事务的 然后在我封装的框架里面,我打印了他的值,发现是0,问题找到 那么,在插入的时候...PDO::ATTR_AUTOCOMMIT为1 ,在启动的swoole-httpserer里面是0,我没有继续深入。
PDO::rollBack PDO::rollBack — 回滚一个事务(PHP 5 = 5.1.0, PECL pdo = 0.1.0) 说明 语法 bool PDO::rollBack ( void...) 回滚由PDO::beginTransaction()发起的当前事务。
PDO::getAttribute PDO::getAttribute — 取回一个数据库连接的属性(PHP 5 = 5.1.0, PECL pdo = 0.1.0) 说明 语法 mixed PDO...参数说明: attribute : PDO::ATTR_* 常量中的一个。...下列为应用到数据库连接中的常量: _PDO::ATTRAUTOCOMMIT _PDO::ATTRCASE _PDO::ATTR_CLIENTVERSION _PDO::ATTR_CONNECTIONSTATUS..._PDO::ATTR_DRIVERNAME _PDO::ATTRERRMODE _PDO::ATTR_ORACLENULLS _PDO::ATTRPERSISTENT _PDO::ATTRPREFETCH..._PDO::ATTR_SERVERINFO _PDO::ATTR_SERVERVERSION _PDO::ATTRTIMEOUT 返回值 成功调用则返回请求的 PDO 属性值。
PDO::lastInsertId PDO::lastInsertId — 返回最后插入行的ID或序列值(PHP 5 = 5.1.0, PECL pdo = 0.1.0) 说明 语法 string...比如,PDO_PGSQL() 要求为 name 参数指定序列对象的名称。 注意:在不同的 PDO 驱动之间,此方法可能不会返回一个有意义或一致的结果,因为底层数据库可能不支持自增字段或序列的概念。...返回值 如果没有为参数 name 指定序列名称,PDO::lastInsertId() 则返回一个表示最后插入数据库那一行的行ID的字符串。...如果为参数 name 指定了序列名称,PDO::lastInsertId() 则返回一个表示从指定序列对象取回最后的值的字符串。...如果当前 PDO 驱动不支持此功能,则 PDO::lastInsertId() 触发一个 IM001 SQLSTATE 。
PDO::query PDO::query — 执行 SQL 语句,返回PDOStatement对象,可以理解为结果集(PHP 5 = 5.1.0, PECL pdo = 0.2.0) 说明 语法...public PDOStatement PDO::query ( string $statement ) public PDOStatement PDO::query ( string $statement..., int $PDO::FETCH_COLUMN , int $colno ) public PDOStatement PDO::query ( string $statement , int $PDO..., int $PDO::FETCH_INTO , object $object ) PDO::query() 在一个单独的函数中调用并执行 SQL 语句, 返回结果集 (如果有),语句作为一个PDOStatement...返回值 如果成功,PDO::query()返回PDOStatement对象,如果失败返回 FALSE 。 实例 PDO::query实例 遍历输出结果集: <?
PDO::errorInfo PDO::errorCode — 返回最后一次操作数据库的错误信息(PHP 5 = 5.1.0, PECL pdo = 0.1.0) 说明 语法 public array...PDO::errorInfo ( void ) 返回值 返回一个数组,该数组包含了最后一次操作数据库的错误信息描述。...实例 显示errorInfo()中关于PDO_ODBC连接到DB2数据库的错误信息 <?...以上例程会输出: PDO::errorInfo(): Array ( [0] = HY000 [1] = 1 [2] = near "bogus": syntax error ) 总结
PDO的概述 PDO(PHP Data Object)是有MySql官方封装的、基于面向对象编程思想的、使用C语言开发的数据库抽象层。...执行SQL语句 PDO提供了3中执行SQL语句的方法,分别是exec()方法、query()方法和预处理语句。...exec()方法 exec()方法可以执行一条语句,并返回受影响的行数: int PDO::exec(sql); exec()方法通常应用于INSERT、DELETE、UPDATE等语句 query()...语句 query()语句常用于SELECT语句,他的返回值是PDOStatement的实例,是PDO的结果集 PDOStatement PDO::query(sql) 预处理语句 PDO提供对预处理语句的支持
PDO::prepare PDO::prepare — 准备要执行的SQL语句并返回一个 PDOStatement 对象(PHP 5 = 5.1.0, PECL pdo = 0.1.0) 说明 语法...public PDOStatement PDO::prepare ( string $statement [, array $driver_options = array() ] ) 为PDOStatement...driver_options 此数组包含一个或多个key= value 对来设置 PDOStatement 对象的属性, 最常使用到是将PDO::ATTR_CURSOR值设置为PDO::CURSOR_SCROLL...返回值 如果成功,PDO::prepare()返回PDOStatement对象,如果失败返回 FALSE 或抛出异常 PDOException 。...::ATTR_CURSOR = PDO::CURSOR_FWDONLY)); $sth- execute(array(':calories' = 150, ':colour' = 'red'));
PDO::getAvailableDrivers PDO::getAvailableDrivers — 返回一个可用驱动的数组(PHP 5 = 5.1.0, PECL pdo = 0.1.0) 说明...语法 static array PDO::getAvailableDrivers ( void ) array pdo_drivers ( void ) 此函数(方法)返回所有当前可用在PDO::_construct...()的参数 DSN 中的 PDO 驱动。...返回值 PDO::getAvailableDrivers()返回一个 包含可用 PDO 驱动名字的数组。如果没有可用的驱动,则返回一个空数组。...实例 一个 PDO::getAvailableDrivers() 的例子 <?php print_r(PDO::getAvailableDrivers()); ?
$pdo=new PDO($dsn,$username,$password); var_dump($pdo); exec() 执行一条 SQL 语句,并返回其受影响的行数。...EOF; $res=$pdo->exec($query); // 最后插入记录的 ID 号 $pdo->lastInsertId(); var_dump($res); // 获取错误信息 $...pdo->errorCode(); $pdo->errorInfo(); query() 查询,执行一条 SQL 语句,返回一个 PDOStatement 对象 查询 插入 $sql='...false setAttribute() getAttribute() 设置,得到数据库连接属性 $pdo->getAttribute($attribute); $pdo->setAttribute...; $stmt=$pdo->prepare($sql); $stmt->execute([':username'=>$usernmae]); // ?
PDO::beginTransaction PDO::beginTransaction 启动一个事务(PHP 5 = 5.1.0, PECL pdo = 0.1.0) 说明 语法 bool PDO:...自动提交模式被关闭的同时,通过 PDO 对象实例对数据库做出的更改直到调用PDO::commit()结束事务才被提交。...调用PDO::rollBack()将回滚对数据库做出的更改并将数据库连接返回到自动提交模式。
PDO::quote PDO::quote — 为SQL语句中的字符串添加引号。...(PHP 5 = 5.1.0, PECL pdo = 0.2.1) 说明 语法 public string PDO::quote ( string $string [, int $parameter_type...= PDO::PARAM_STR ] ) PDO::quote()为SQL语句中的字符串添加引号或者转义特殊字符串。...php $conn = new PDO('sqlite:/home/lynn/music.sql3'); /* Simple string */ $string = 'Nice'; print "Unquoted...php $conn = new PDO('sqlite:/home/lynn/music.sql3'); /* Dangerous string */ $string = 'Naughty \' string
PDO::commit PDO::commit提交一个事务(PHP 5 = 5.1.0, PECL pdo = 0.1.0) 说明 语法 ```bool PDO::commit ( void ) 提交一个事务...,数据库连接返回到自动提交模式直到下次调用 PDO::beginTransaction() 开始一个新的事务为止。
PDO::inTransaction PDO::inTransaction — 检查是否在一个事务内(PHP 5 = 5.3.3, Bundled pdo_pgsql) 说明 语法 bool PDO:
PDO::_construct PDO::_construct — 创建一个表示数据库连接的 PDO 实例(PHP 5 = 5.1.0, PECL pdo = 0.1.0) 说明 语法 PDO::_...string $dsn [, string $username [, string $password [, array $driver_options ]]] ) 创建一个表示连接到请求数据库的数据库连接PDO...对于某些PDO驱动,此参数为可选项。 password : DSN字符串中的密码。对于某些PDO驱动,此参数为可选项。 driver_options : 一个具体驱动的连接选项的键= 值数组。...返回值 成功则返回一个PDO对象。 错误/异常 如果试图连接到请求的数据库失败,则PDO::__construct()抛出一个PDO异常(PDOException) 。...实例 通过调用驱动程序创建一个PDO实例 <?
PDO::errorCode PDO::errorCode — 获取跟数据库句柄上一次操作相关的 SQLSTATE(PHP 5 = 5.1.0, PECL pdo = 0.1.0) 说明 语法 mixed...PDO::errorCode ( void ) 返回值 返回一个 SQLSTATE,一个由5个字母或数字组成的在 ANSI SQL 标准中定义的标识符。...以上例程会输出: PDO::errorCode(): 42S02 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对ZaLou.Cn的支持。
PDO::setAttribute PDO::setAttribute — 设置属性(PHP 5 = 5.1.0, PECL pdo = 0.1.0) 说明 语法 bool PDO::setAttribute..._PDO::ATTRCASE :强制列名为指定的大小写。 _PDO::CASELOWER :强制列名小写。 _PDO::CASENATURAL :保留数据库驱动返回的列名。..._PDO::CASEUPPER :强制列名大写。 _PDO::ATTRERRMODE :错误报告。 _PDO::ERRMODESILENT : 仅设置错误代码。..._PDO::NULL_EMPTYSTRING : 将空字符串转换成 NULL 。 _PDO::NULL_TOSTRING : 将 NULL 转换成空字符串。..._PDO::ATTR_STATEMENTCLASS : 设置从PDOStatement派生的用户提供的语句类。 不能用于持久的PDO实例。
PHP PDO连接 连接是通过创建 PDO 基类的实例而建立的。不管使用哪种驱动程序,都是用 PDO 类名。 连接到 MySQL <?...连接数据成功后,返回一个 PDO 类的实例给脚本,此连接在 PDO 对象的生存周期中保持活动。 要想关闭连接,需要销毁对象以确保所有剩余到它的引用都被删除,可以赋一个 NULL 值给对象变量。...php $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array( PDO::ATTR_PERSISTENT =...注意:如果想使用持久连接,必须在传递给 PDO 构造函数的驱动选项数组中设置 PDO::ATTR_PERSISTENT 。...如果是在对象初始化之后用 PDO::setAttribute() 设置此属性,则驱动程序将不会使用持久连接。
PDO::exec PDO::exec — 执行一条 SQL 语句,并返回受影响的行数(PHP 5 = 5.1.0, PECL pdo = 0.1.0) 说明 语法 int PDO::exec (...string $statement ) PDO::exec() 在一个单独的函数调用中执行一条 SQL 语句,返回受此语句影响的行数。...PDO::exec() 不会从一条 SELECT 语句中返回结果。对于在程序中只需要发出一次的 SELECT 语句,可以考虑使用PDO::query()。...返回值 PDO::exec()返回受修改或删除 SQL 语句影响的行数。如果没有受影响的行,则 PDO::exec() 返回 0。...下面例子依赖 PDO::exec() 的返回值是不正确的,其中受影响行数为 0 的语句会导致调用 die() : <?
领取专属 10元无门槛券
手把手带您无忧上云