复习PDO

1.链接

try {
    $dns = 'mysql:host=localhost;dbname=test';
    $attrs = array(
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION 
        // 错误处理方式
        // (1)ERRMODE_SILENT 只设置错误码,通过PDO::errorCode,PDO::errorInfo / PDOStatement::errorCode,PDOStatement::errorInfo获取
        // (2)ERRMODE_WARNING, php抛出warning级别错误
        // (3)ERRMODE_EXCEPTION, php抛出PDOException异常
    );
    // 链接选项还可以用'PDO::setAttribute'设置
    $pdo = new PDO($dns,$attrs);

} catch (PDOException $e) {
    echo '链接错误:' . $e->getMessage();
}

2.事务

try {
    $pdo->beginTransaction();
    $pdo->exec(...);
    $pdo->exec(...); // 执行一条语句返回影响的行数
    $pdo->commit();
    // $pdo->rollback();
} catch (PDOException $e) {
    echo '该类型数据库不支持事务';
}

3.预处理

// 绑定参数
$sql_1 = "SELECT * FROM test WHERE username = :username";
$stm = $pdo->prepare($sql_1);
$stm->bindParam(':username',$username);
$username = 'haha';
$stm->execute();

// 绑定值
$sql_2 = "SELECT * FROM test WHERE age = ?";
$stm = $pdo->prepare($sql_2);
$age = 11;
$stm->bindValue(1,$age);
$stm->execute();

4.获取数据

$stm = $pdo->query('SELECT username,age FROM test');

// 单个值
$stm->bindColumn('username',$username);

// 单行
$stm->fetch(PDO::FETCH_BOTH);

// 多行
$stm->fetchAll(PDO::FETCH_BOTH);

// 影响行数
$stm->rowCount();

标签: none