php_pdo详解

PDO 类

PDO {
     //创建一个表示数据库连接的 PDO 实例
    __construct ( string $dsn [, string $username [, string $password [, array $driver_options ]]] )
    //启动一个事务
    bool beginTransaction ( void )
    //提交一个事务
    bool commit ( void )
    //获取跟数据库句柄上一次操作的错误码
    mixed errorCode ( void )
    //获取跟数据库句柄上一次操作的错误信息
    public array errorInfo ( void )
    //执行一条 SQL 语句,并返回受影响的行数
    int exec ( string $statement )
    //取回一个数据库连接的属性
    //[getAttribute详解](http://www.runoob.com/php/pdo-getattribute.html)
    mixed getAttribute ( int $attribute )
    //返回一个可用驱动的数组
    static array getAvailableDrivers ( void )
    //检查是否在一个事务内
    bool inTransaction ( void )
    //返回最后插入行的ID或序列值
    string lastInsertId ([ string $name = NULL ] )
    //准备要执行的SQL语句并返回一个 PDOStatement 对象
    public PDOStatement prepare ( string $statement [, array $driver_options = array() ] )
    //执行 SQL 语句,返回PDOStatement对象,可以理解为结果集
    public PDOStatement query ( string $statement )
    //为SQL语句中的字符串添加引号
    public string quote ( string $string [, int $parameter_type = PDO::PARAM_STR ] )
    //回滚一个事务
    bool rollBack ( void )
    //设置属性
    //[setAttribute 详解](http://www.runoob.com/php/pdo-setattribute.html)
    bool setAttribute ( int $attribute , mixed $value )
}

实例:


//[pdo初始化传值有三种方式,其他两种自己写配置文件或在php.ini中配置,详细看php.net](http://php.net/manual/zh/pdo.construct.php)
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';

try {
    $db = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}
$db->exec("set names utf8");
//注意下面三种方式区别,默认索引数组和关联数组均有
$res = $db->query('SELECT * FROM `mytable` WHERE id = 1');
$result = $res->fetchAll();
$res = $db->query('SELECT * FROM `mytable` WHERE id = 1', PDO::FETCH_NUM);
$result = $res->fetchAll();
$res = $db->query('SELECT * FROM `mytable` WHERE id = 1', PDO::FETCH_ASSOC);
//[fetchAll详解](http://php.net/manual/zh/pdostatement.fetchall.php)
//不仅可以在query中指定返回结果集形式,也可以在fetchAll中指定返回形式
//fetchAll还可以将结果集传给指定类和方法,还可对结果集分组、取唯一值等
$result = $res->fetchAll();
$result = $res->fetchAll(PDO::FETCH_ASSOC);
$result = $res->fetchAll(PDO::FETCH_COLUMN);
$result = $res->fetchAll(PDO::FETCH_GROUP | PDO::FETCH_UNIQUE);
//释放资源,pdo中没有像mysql_close这样的方法,需要手动释放
$db = null;
$res = null;
?>

query()的快捷操作方式:


    function getFruit($conn) {
        $sql = 'SELECT name, color, calories FROM fruit ORDER BY name';
        //省掉了fetchall操作,直接得到结果
        foreach ($conn->query($sql) as $row) {
            print $row['name'] . "\t";
            print $row['color'] . "\t";
            print $row['calories'] . "\n";
        }
    }
?>
$pdo->exec("set names utf8");
$sql_link = "select name, url from link where passed = 1";
$res_link = $pdo->query($sql_link);
while ($row_link = $res_link->fetch(PDO::FETCH_ASSOC)) {
    $name = $row_link['name'];
    $url = $row_link['url'];
}

exec()使用:


$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';

try {
    $db = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}
$db->exec("set names utf8");
/*  删除 FRUIT 数据表中满足条件的所有行 */
$count = $db->exec("DELETE FROM fruit WHERE colour = 'red'");

/* 返回被删除的行数 */
print("Deleted $count rows.\n");
?>

注意:对于数据库的查询操作的执行最好用query(),而对于数据库的增删改操作最好用exec()方法!

PDOStatement 类

PDOStatement implements Traversable {
    /* 属性 */
    //所用的查询字符串
    readonly string $queryString;
    /* 方法 */
    //绑定一列到一个 PHP 变量
    bool bindColumn ( mixed $column , mixed &$param [, int $type [, int $maxlen [, mixed $driverdata ]]] )
    // 绑定一个参数到指定的变量名
    bool bindParam ( mixed $parameter , mixed &$variable [, int $data_type = PDO::PARAM_STR [, int $length [, mixed $driver_options ]]] )
    //把一个值绑定到一个参数
    bool bindValue ( mixed $parameter , mixed $value [, int $data_type = PDO::PARAM_STR ] )
    //关闭游标,使语句能再次被执行。
    bool closeCursor ( void )
    //返回结果集中的列数
    int columnCount ( void )
    //打印一条 SQL 预处理命令
    bool debugDumpParams ( void )
    //获取跟上一次语句句柄操作相关的 SQLSTATE
    string errorCode ( void )
    // 获取跟上一次语句句柄操作相关的扩展错误信息
    array errorInfo ( void )
    //执行一条预处理语句
    bool execute ([ array $input_parameters ] )
    //从结果集中获取下一行
    mixed fetch ([ int $fetch_style [, int $cursor_orientation = PDO::FETCH_ORI_NEXT [, int $cursor_offset = 0 ]]] )
    //返回一个包含结果集中所有行的数组
    array fetchAll ([ int $fetch_style [, mixed $fetch_argument [, array $ctor_args = array() ]]] )
    //从结果集中的下一行返回单独的一列。
    string fetchColumn ([ int $column_number = 0 ] )
    //获取下一行并作为一个对象返回。
    mixed fetchObject ([ string $class_name = "stdClass" [, array $ctor_args ]] )
    //检索一个语句属性
    mixed getAttribute ( int $attribute )
    // 返回结果集中一列的元数据
    array getColumnMeta ( int $column )
    //在一个多行集语句句柄中推进到下一个行集
    bool nextRowset ( void )
    //返回受上一个 SQL 语句影响的行数
    int rowCount ( void )
    //设置一个语句属性
    bool setAttribute ( int $attribute , mixed $value )
    //为语句设置默认的获取模式。
    bool setFetchMode ( int $mode )
}

PDOException 异常类

PDOException extends RuntimeException {
    /* 属性 */
    //获取跟上一次语句句柄操作相关的扩展错误信息
    public array $errorInfo ;
    //文本错误信息。
    protected string $message ;
    //SQLSTATE 错误码
    protected string $code ;
    /* 继承的方法 */
    //获取异常消息内容
    final public string Exception::getMessage ( void )
    //返回异常链中的前一个异常,否则返回NULL。
    final public Exception Exception::getPrevious ( void )
    //获取异常代码
    final public int Exception::getCode ( void )
    //获取发生异常的程序文件名称
    final public string Exception::getFile ( void )
    //获取发生异常的代码在文件中的行号
    final public int Exception::getLine ( void )
    // 获取异常追踪信息
    final public array Exception::getTrace ( void )
    //获取字符串类型的异常追踪信息
    final public string Exception::getTraceAsString ( void )
    //将异常对象转换为字符串
    public string Exception::__toString ( void )
}

你可能感兴趣的:(PHP,mysqli,php-pdo)