《PHP编程:php pdo操作数据库示例》要点:
本文介绍了PHP编程:php pdo操作数据库示例,希望对您有用。如果有疑问,可以联系我们。
PHP实例POD扩展是在PHP5中加入,该扩展提供PHP内置类 PDO来对数据库进行访问,不同数据库使用相同的方法名,解决数据库连接不统一的问题.
PHP实例PDO的特点:
PHP实例性能.PDO 从一开始就吸取了现有数据库扩展成功和失败的经验教训.因为 PDO 的代码是全新的,所以我们有机会重新开始设计性能,以利用 PHP 5 的最新特性.
PHP实例能力.PDO 旨在将常见的数据库功能作为基础提供,同时提供对于 RDBMS 独特功能的方便访问.
PHP实例简单.PDO 旨在使您能够轻松使用数据库.API 不会强行介入您的代码,同时会清楚地表明每个函数调用的过程.
PHP实例运行时可扩展.PDO 扩展是模块化的,使您能够在运行时为您的数据库后端加载驱动程序,而不必重新编译或重新安装整个 PHP 程序.例如,PDO_OCI 扩展会替代 PDO 扩展实现 oracle 数据库 API.还有一些用于 MySQL、PostgreSQL、ODBC 和 Firebird 的驱动程序,更多的驱动程序尚在开发.
PHP实例PDO 安装
PHP实例你可以通过 PHP 的 phpinfo() 函数来查看是否安装了PDO扩展.
PHP实例1.在 Unix /Linux系统上安装 PDO
PHP实例 在Unix上或Linux上你需要添加以下扩展:
PHP实例
extension=pdo.so
PHP实例2.在Windows安装pdo
PHP实例PDO 和所有主要的驱动作为共享扩展随 PHP 一起发布,要激活它们只需简单地编辑 php.ini 文件,并添加以下扩展:
PHP实例
extension=php_pdo.dll
PHP实例除此之外还有以下对应的各种数据库扩展:
PHP实例
;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实例打开php.ini把上面所有行前面的分号去掉就可以了.
PHP实例在设定好这些配置后,我们需要重启PHP 或 Web服务器.
PHP实例下面我们以mysql为例来使用pdo:
PHP实例
<?php
$dbms='mysql'; //数据库类型
$host='localhost'; //数据库主机名
$dbName='test'; //使用的数据库
$user='root'; //数据库连接用户名
$pass=''; //对应的密码
$dsn="$dbms:host=$host;dbname=$dbName";
try {
$dbh = new PDO($dsn, $user, $pass); //初始化一个PDO对象
echo "连接成功<br/>";
/*你还可以进行一次搜索操作
foreach ($dbh->query('SELECT * from FOO') as $row) {
print_r($row); //你可以用 echo($GLOBAL); 来看到这些值
}
*/
$dbh = null;
} catch (PDOException $e) {
die ("Error!: " . $e->getMessage() . "<br/>");
}
//默认这个不是长连接,如果需要数据库长连接,需要最后加一个参数:array(PDO::ATTR_PERSISTENT => true) 变成这样:
$db = new PDO($dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => true));
?>
PHP实例再来看看pdo的详细介绍:
PHP实例1.预定义常量:
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) | 指定获取方式,返回一个所请求类的新实例,映射列到类中对应的属性名. PHP实例注意: 如果所请求的类中不存在该属性,则调用 __set() 魔术方法 |
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) | 获取一个有两列的结果集到一个数组,其中第一列为键名,第二列为值.自 PHP 5.2.3 起可用. |
PDO::FETCH_CLASSTYPE (integer) | 根据第一列的值确定类名. |
PDO::FETCH_SERIALIZE (integer) | 类似 PDO::FETCH_INTO ,但是以一个序列化的字符串表示对象.自 PHP 5.1.0 起可用.从 PHP 5.3.0 开始,如果设置此标志,则类的构造函数从不会被调用. |
PDO::FETCH_PROPS_LATE (integer) | 设置属性前调用构造函数.自 PHP 5.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) | 返回驱动名称.
PHP实例使用 PDO::ATTR_DRIVER_NAME 的例子: <?php if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql') { echo "Running on mysql; doing something mysql specific here\n"; } ?> |
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) | 自 PHP 5.2.0 起可用. |
PDO::ATTR_EMULATE_PREPARES (integer) | 自 PHP 5.1.3 起可用. |
PDO::ERRMODE_SILENT (integer) | 如果发生错误,则不显示错误或异常.希望开发人员显式地检查错误.此为默认模式.关于此属性的更多信息请参见 错误与错误处理 . |
PDO::ERRMODE_WARNING (integer) | 如果发生错误,则显示一个 PHP E_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) | 在绑定参数注册允许驱动程序正常化变量名时触发事件. |
PHP实例2.PDO 类:
PHP实例以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持维易PHP.
转载请注明本页网址:
http://www.vephp.com/jiaocheng/1497.html