PHP的PDO模块应用
最近对我的PHP后台框架进行些升级维护,决定引入JQuery,和PHP的一个数据库模块PDO,以前用的是自己写的类,作为方便以后使用其他数据库备用,由于现在的PDO中文帮助还是比较少,所以做一个笔记.
各各扩展所对应的数据库是:
Driver name Supported databases
PDO_DBLIB FreeTDS / Microsoft SQL Server / Sybase
PDO_FIREBIRD Firebird/Interbase 6
PDO_INFORMIX IBM Informix Dynamic Server
PDO_MYSQL MySQL 3.x/4.x
PDO_OCI Oracle Call Interface
PDO_ODBC ODBC v3 (IBM DB2, unixODBC and win32 ODBC)
PDO_PGSQL PostgreSQL
PDO_SQLITE SQLite 3 and SQLite 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | $user='root';//数据库连接用户名 $pass='';//对应的密码 try{ $db = new PDO('mysql:host=localhost;dbname=test', $user, $pass,array(PDO::ATTR_PERSISTENT => true));//初始化PDO对象 //默认这个不是长连接,如果需要数据库长连接,需要最后加一个参数:array(PDO::ATTR_PERSISTENT => true) $db = new PDO('数据库类型:host=主机地址;dbname=数据库名',用户名,密码,array(PDO::ATTR_PERSISTENT => true)); $db->query('SET NAMES \'utf8\'');//设置连接数据库的语言环境 echo "连接成功"; /*你还可以进行一次搜索操作 foreach($dbh->query('SELECT * from gaga')as $row){ print_r($row);//你可以用 echo($GLOBAL); 来看到这些值 } */ //$db = null; }catch(PDOException$e){ die('数据库连接错误: '.$e->getMessage().' '); } |
$db->setAttribute(PDO::ATTR_CASE,PDO::CASE_UPPER); //设置属性
下面列出多有PDO::setAttribute()的参数:
PDO::ATTR_CASE: 强制列名变成一种格式,详细如下(第二个参数):
- PDO::CASE_LOWER: 强制列名是小写.
- PDO::CASE_NATURAL: 列名按照原始的方式
- PDO::CASE_UPPER: 强制列名为大写.
PDO::ATTR_ERRMODE: 错误提示.
- PDO::ERRMODE_SILENT: 不显示错误信息,只显示错误码.
- PDO::ERRMODE_WARNING: 显示警告错误.
- PDO::ERRMODE_EXCEPTION: 抛出异常.
PDO::ATTR_ORACLE_NULLS(不仅仅是ORACLE有效,别的数据库也有效): )指定数据库返回的NULL值在php中对应的数值。
- PDO::NULL_NATURAL: 不变.
- PDO::NULL_EMPTY_STRING: Empty string is converted toNULL.
- PDO::NULL_TO_STRING: NULL is converted to an empty string.
PDO::ATTR_STRINGIFY_FETCHES: Convert numeric values to strings when fetching. Requiresbool.
PDO::ATTR_STATEMENT_CLASS: Set user-supplied statement class derived from PDOStatement. Cannot be used with persistent PDO instances. Requiresarray(string classname, array(mixed constructor_args)).
PDO::ATTR_AUTOCOMMIT(available in OCI, Firebird and MySQL): Whether to autocommit every single statement.
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY(available in MySQL): Use buffered queries.
查询操作主要是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操作无效。
事务中,可以使用 PDO::commit() 或 PDO::rollBack() 来结束该事务,这取决于事务中运行的代码是否成功。
1 2 3 4 5 6 7 8 9 10 | try{ $db = new PDO('odbc:SAMPLE','db2inst1','ibmdb2', array(PDO_ATTR_PERSISTENT=>true)); echo "Connected\n"; $db->setAttribute(PDO_ATTR_ERRMODE,PDO_ERRMODE_EXCEPTION); $db->beginTransaction(); $db->exec("insert into staff (id, first, last) values (23, 'Joe', 'Bloggs')"); $db->exec("insert into salarychange (id, amount, changedate) values (23, 50000, NOW())"); $db->commit(); |
PDO->beginTransaction() — 标明回滚起始点
PDO->commit() — 标明回滚结束点,并执行SQL
PDO->__construct() — 建立一个PDO链接数据库的实例
PDO->errorCode() — 获取错误码
PDO->errorInfo() — 获取错误的信息
PDO->exec() — 处理一条SQL语句,并返回所影响的条目数
PDO->getAttribute() — 获取一个“数据库连接对象”的属性
PDO->getAvailableDrivers() — 获取有效的PDO驱动器名称
PDO->lastInsertId() — 获取写入的最后一条数据的主键值
PDO->prepare() — 生成一个“查询对象”
PDO->query() — 处理一条SQL语句,并返回一个“PDOStatement”
PDO->quote() — 为某个SQL中的字符串添加引号
PDO->rollBack() — 执行回滚
PDO->setAttribute() — 为一个“数据库连接对象”设定属性
PDOStatement->bindColumn() — Bind a column to a PHP variable
PDOStatement->bindParam() — Binds a parameter to the specified variable name
PDOStatement->bindValue() — Binds a value to a parameter
PDOStatement->closeCursor() — Closes the cursor, enabling the statement to be executed again.
PDOStatement->columnCount() — 返回数据集列的数量对应:num_fields
PDOStatement->errorCode() — Fetch the SQLSTATE associated with the last operation on the statement handle
PDOStatement->errorInfo() — Fetch extended error information associated with the last operation on the statement handle
PDOStatement->execute() — Executes a prepared statement
PDOStatement->fetch() — 返回结果集的下一条.
PDOStatement->fetchAll() — 返回一个数组包含着全部的值
PDOStatement->fetchColumn() — Returns a single column from the next row of a result set
PDOStatement->fetchObject() — Fetches the next row and returns it as an object.
PDOStatement->getAttribute() — Retrieve a statement attribute
PDOStatement->getColumnMeta() — Returns metadata for a column in a result set
PDOStatement->nextRowset() — Advances to the next rowset in a multi-rowset statement handle
PDOStatement->rowCount() — 返回一个数字显示在执行SQL操作后受影响的行数
PDOStatement->setAttribute() — Set a statement attribute
PDOStatement->setFetchMode() — 返回数据库表属性Set the default fetch mode for this statement
}catch(Exception $e){
$db->rollBack();
echo”Failed: “.$e->getMessage();
}
暂无相关文章










评论
还没有评论呢。