php pdo操作数据库示例
POD扩展是在PHP5中加入,该扩展提供PHP内置类PDO来对数据库进行访问,不同数据库使用相同的方法名,解决数据库连接不统一的问题。
PDO的特点:
性能。PDO从一开始就吸取了现有数据库扩展成功和失败的经验教训。因为PDO的代码是全新的,所以我们有机会重新开始设计性能,以利用PHP5的最新特性。
能力。PDO旨在将常见的数据库功能作为基础提供,同时提供对于RDBMS独特功能的方便访问。
简单。PDO旨在使您能够轻松使用数据库。API不会强行介入您的代码,同时会清楚地表明每个函数调用的过程。
运行时可扩展。PDO扩展是模块化的,使您能够在运行时为您的数据库后端加载驱动程序,而不必重新编译或重新安装整个PHP程序。例如,PDO_OCI扩展会替代PDO扩展实现oracle数据库API。还有一些用于MySQL、PostgreSQL、ODBC和Firebird的驱动程序,更多的驱动程序尚在开发。
PDO安装
你可以通过PHP的phpinfo()函数来查看是否安装了PDO扩展。
1.在Unix/Linux系统上安装PDO
在Unix上或Linux上你需要添加以下扩展:
extension=pdo.so
2.在Windows安装pdo
PDO和所有主要的驱动作为共享扩展随PHP一起发布,要激活它们只需简单地编辑php.ini文件,并添加以下扩展:
extension=php_pdo.dll
除此之外还有以下对应的各种数据库扩展:
;extension=php_pdo_firebird.dll ;extension=php_pdo_informix.dll ;extension=php_pdo_mssql.dll ;extension=php_pdo_mysql.dll ;extension=php_pdo_oci.dll ;extension=php_pdo_oci8.dll ;extension=php_pdo_odbc.dll ;extension=php_pdo_pgsql.dll ;extension=php_pdo_sqlite.dll
打开php.ini把上面所有行前面的分号去掉就可以了。
在设定好这些配置后,我们需要重启PHP或Web服务器。
下面我们以mysql为例来使用pdo:
"; /*你还可以进行一次搜索操作 foreach($dbh->query('SELECT*fromFOO')as$row){ print_r($row);//你可以用echo($GLOBAL);来看到这些值 } */ $dbh=null; }catch(PDOException$e){ die("Error!:".$e->getMessage()."
"); } //默认这个不是长连接,如果需要数据库长连接,需要最后加一个参数:array(PDO::ATTR_PERSISTENT=>true)变成这样: $db=newPDO($dsn,$user,$pass,array(PDO::ATTR_PERSISTENT=>true)); ?>
再来看看pdo的详细介绍:
1.预定义常量:
注意:如果所请求的类中不存在该属性,则调用__set()魔术方法 使用PDO::ATTR_DRIVER_NAME的例子:
PDO::PARAM_BOOL(integer)
表示布尔数据类型。
PDO::PARAM_NULL(integer)
表示SQL中的NULL数据类型。
PDO::PARAM_INT(integer)
表示SQL中的整型。
PDO::PARAM_STR(integer)
表示SQL中的CHAR、VARCHAR或其他字符串类型。
PDO::PARAM_LOB(integer)
表示SQL中大对象数据类型。
PDO::PARAM_STMT(integer)
表示一个记录集类型。当前尚未被任何驱动支持。
PDO::PARAM_INPUT_OUTPUT(integer)
指定参数为一个存储过程的INOUT参数。必须用一个明确的PDO::PARAM_*数据类型跟此值进行按位或。
PDO::FETCH_LAZY(integer)
指定获取方式,将结果集中的每一行作为一个对象返回,此对象的变量名对应着列名。PDO::FETCH_LAZY创建用来访问的对象变量名。在PDOStatement::fetchAll()中无效。
PDO::FETCH_ASSOC(integer)
指定获取方式,将对应结果集中的每一行作为一个由列名索引的数组返回。如果结果集中包含多个名称相同的列,则PDO::FETCH_ASSOC每个列名只返回一个值。
PDO::FETCH_NAMED(integer)
指定获取方式,将对应结果集中的每一行作为一个由列名索引的数组返回。如果结果集中包含多个名称相同的列,则PDO::FETCH_ASSOC每个列名返回一个包含值的数组。
PDO::FETCH_NUM(integer)
指定获取方式,将对应结果集中的每一行作为一个由列号索引的数组返回,从第0列开始。
PDO::FETCH_BOTH(integer)
指定获取方式,将对应结果集中的每一行作为一个由列号和列名索引的数组返回,从第0列开始。
PDO::FETCH_OBJ(integer)
指定获取方式,将结果集中的每一行作为一个属性名对应列名的对象返回。
PDO::FETCH_BOUND(integer)
指定获取方式,返回TRUE且将结果集中的列值分配给通过PDOStatement::bindParam()或PDOStatement::bindColumn()方法绑定的PHP变量。
PDO::FETCH_COLUMN(integer)
指定获取方式,从结果集中的下一行返回所需要的那一列。
PDO::FETCH_CLASS(integer)
指定获取方式,返回一个所请求类的新实例,映射列到类中对应的属性名。
PDO::FETCH_INTO(integer)
指定获取方式,更新一个请求类的现有实例,映射列到类中对应的属性名。
PDO::FETCH_FUNC(integer)
允许在运行中完全用自定义的方式处理数据。(仅在PDOStatement::fetchAll()中有效)。
PDO::FETCH_GROUP(integer)
根据值分组返回。通常和PDO::FETCH_COLUMN或PDO::FETCH_KEY_PAIR一起使用。
PDO::FETCH_UNIQUE(integer)
只取唯一值。
PDO::FETCH_KEY_PAIR(integer)
获取一个有两列的结果集到一个数组,其中第一列为键名,第二列为值。自PHP5.2.3起可用。
PDO::FETCH_CLASSTYPE(integer)
根据第一列的值确定类名。
PDO::FETCH_SERIALIZE(integer)
类似PDO::FETCH_INTO,但是以一个序列化的字符串表示对象。自PHP5.1.0起可用。从PHP5.3.0开始,如果设置此标志,则类的构造函数从不会被调用。
PDO::FETCH_PROPS_LATE(integer)
设置属性前调用构造函数。自PHP5.2.0起可用。
PDO::ATTR_AUTOCOMMIT(integer)
如果此值为FALSE,PDO将试图禁用自动提交以便数据库连接开始一个事务。
PDO::ATTR_PREFETCH(integer)
设置预取大小来为你的应用平衡速度和内存使用。并非所有的数据库/驱动组合都支持设置预取大小。较大的预取大小导致性能提高的同时也会占用更多的内存。
PDO::ATTR_TIMEOUT(integer)
设置连接数据库的超时秒数。
PDO::ATTR_ERRMODE(integer)
关于此属性的更多信息请参见错误及错误处理部分。
PDO::ATTR_SERVER_VERSION(integer)
此为只读属性;返回PDO所连接的数据库服务的版本信息。
PDO::ATTR_CLIENT_VERSION(integer)
此为只读属性;返回PDO驱动所用客户端库的版本信息。
PDO::ATTR_SERVER_INFO(integer)
此为只读属性。返回一些关于PDO所连接的数据库服务的元信息。
PDO::ATTR_CONNECTION_STATUS(integer)
PDO::ATTR_CASE(integer)
用类似PDO::CASE_*的常量强制列名为指定的大小写。
PDO::ATTR_CURSOR_NAME(integer)
获取或设置使用游标的名称。当使用可滚动游标和定位更新时候非常有用。
PDO::ATTR_CURSOR(integer)
选择游标类型。PDO当前支持PDO::CURSOR_FWDONLY和PDO::CURSOR_SCROLL。一般为PDO::CURSOR_FWDONLY,除非确实需要一个可滚动游标。
PDO::ATTR_DRIVER_NAME(string)
返回驱动名称。
PDO::ATTR_ORACLE_NULLS(integer)
在获取数据时将空字符串转换成SQL中的NULL。
PDO::ATTR_PERSISTENT(integer)
请求一个持久连接,而非创建一个新连接。关于此属性的更多信息请参见连接与连接管理。
PDO::ATTR_STATEMENT_CLASS(integer)
PDO::ATTR_FETCH_CATALOG_NAMES(integer)
将包含的目录名添加到结果集中的每个列名前面。目录名和列名由一个小数点分开(.)。此属性在驱动层面支持,所以有些驱动可能不支持此属性。
PDO::ATTR_FETCH_TABLE_NAMES(integer)
将包含的表名添加到结果集中的每个列名前面。表名和列名由一个小数点分开(.)。此属性在驱动层面支持,所以有些驱动可能不支持此属性。
PDO::ATTR_STRINGIFY_FETCHES(integer)
PDO::ATTR_MAX_COLUMN_LEN(integer)
PDO::ATTR_DEFAULT_FETCH_MODE(integer)
自PHP5.2.0起可用。
PDO::ATTR_EMULATE_PREPARES(integer)
自PHP5.1.3起可用。
PDO::ERRMODE_SILENT(integer)
如果发生错误,则不显示错误或异常。希望开发人员显式地检查错误。此为默认模式。关于此属性的更多信息请参见错误与错误处理。
PDO::ERRMODE_WARNING(integer)
如果发生错误,则显示一个PHPE_WARNING消息。关于此属性的更多信息请参见错误与错误处理。
PDO::ERRMODE_EXCEPTION(integer)
如果发生错误,则抛出一个PDOException异常。关于此属性的更多信息请参见错误与错误处理。
PDO::CASE_NATURAL(integer)
保留数据库驱动返回的列名。
PDO::CASE_LOWER(integer)
强制列名小写。
PDO::CASE_UPPER(integer)
强制列名大写。
PDO::NULL_NATURAL(integer)
PDO::NULL_EMPTY_STRING(integer)
PDO::NULL_TO_STRING(integer)
PDO::FETCH_ORI_NEXT(integer)
在结果集中获取下一行。仅对可滚动游标有效。
PDO::FETCH_ORI_PRIOR(integer)
在结果集中获取上一行。仅对可滚动游标有效。
PDO::FETCH_ORI_FIRST(integer)
在结果集中获取第一行。仅对可滚动游标有效。
PDO::FETCH_ORI_LAST(integer)
在结果集中获取最后一行。仅对可滚动游标有效。
PDO::FETCH_ORI_ABS(integer)
根据行号从结果集中获取需要的行。仅对可滚动游标有效。
PDO::FETCH_ORI_REL(integer)
根据当前游标位置的相对位置从结果集中获取需要的行。仅对可滚动游标有效。
PDO::CURSOR_FWDONLY(integer)
创建一个只进游标的PDOStatement对象。此为默认的游标选项,因为此游标最快且是PHP中最常用的数据访问模式。
PDO::CURSOR_SCROLL(integer)
创建一个可滚动游标的PDOStatement对象。通过PDO::FETCH_ORI_*常量来控制结果集中获取的行。
PDO::ERR_NONE(string)
对应SQLSTATE'00000',表示SQL语句没有错误或警告地成功发出。当用PDO::errorCode()或PDOStatement::errorCode()来确定是否有错误发生时,此常量非常方便。在检查上述方法返回的错误状态代码时,会经常用到。
PDO::PARAM_EVT_ALLOC(integer)
分配事件
PDO::PARAM_EVT_FREE(integer)
解除分配事件
PDO::PARAM_EVT_EXEC_PRE(integer)
执行一条预处理语句之前触发事件。
PDO::PARAM_EVT_EXEC_POST(integer)
执行一条预处理语句之后触发事件。
PDO::PARAM_EVT_FETCH_PRE(integer)
从一个结果集中取出一条结果之前触发事件。
PDO::PARAM_EVT_FETCH_POST(integer)
从一个结果集中取出一条结果之后触发事件。
PDO::PARAM_EVT_NORMALIZE(integer)
在绑定参数注册允许驱动程序正常化变量名时触发事件。
2.PDO类:
- PDO::beginTransaction—启动一个事务
- PDO::commit—提交一个事务
- PDO::__construct—创建一个表示数据库连接的PDO实例
- PDO::errorCode—获取跟数据库句柄上一次操作相关的SQLSTATE
- PDO::errorInfo—返回最后一次操作数据库的错误信息
- PDO::exec—执行一条SQL语句,并返回受影响的行数
- PDO::getAttribute—取回一个数据库连接的属性
- PDO::getAvailableDrivers—返回一个可用驱动的数组
- PDO::inTransaction—检查是否在一个事务内
- PDO::lastInsertId—返回最后插入行的ID或序列值
- PDO::prepare—备要执行的SQL语句并返回一个PDOStatement对象
- PDO::query—执行SQL语句,返回PDOStatement对象,可以理解为结果集
- PDO::quote—为SQL语句中的字符串添加引号。
- PDO::rollBack—回滚一个事务
- PDO::setAttribute—设置属性
- PDOStatement类:
- PDOStatement::bindColumn—绑定一列到一个PHP变量
- PDOStatement::bindParam—绑定一个参数到指定的变量名
- PDOStatement::bindValue—把一个值绑定到一个参数
- PDOStatement::closeCursor—关闭游标,使语句能再次被执行。
- PDOStatement::columnCount—返回结果集中的列数
- PDOStatement::debugDumpParams—打印一条SQL预处理命令
- PDOStatement::errorCode—获取跟上一次语句句柄操作相关的SQLSTATE
- PDOStatement::errorInfo—获取跟上一次语句句柄操作相关的扩展错误信息
- PDOStatement::execute—执行一条预处理语句
- PDOStatement::fetch—从结果集中获取下一行
- PDOStatement::fetchAll—返回一个包含结果集中所有行的数组
- PDOStatement::fetchColumn—从结果集中的下一行返回单独的一列。
- PDOStatement::fetchObject—获取下一行并作为一个对象返回。
- PDOStatement::getAttribute—检索一个语句属性
- PDOStatement::getColumnMeta—返回结果集中一列的元数据
- PDOStatement::nextRowset—在一个多行集语句句柄中推进到下一个行集
- PDOStatement::rowCount—返回受上一个SQL语句影响的行数
- PDOStatement::setAttribute—设置一个语句属性
- PDOStatement::setFetchMode—为语句设置默认的获取模式。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。