MySQL PHP

用 PDO 在 PHP 里操作 MySQL,预处理防注入。

Beginner
Key PointsPDO 是 PHP 操作 MySQL 的标准方式,预处理语句默认防注入。

连接与查询

PHP
<?php
$dsn = 'mysql:host=127.0.0.1;dbname=shop;charset=utf8mb4';
$pdo = new PDO($dsn, $user, $pass, [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
]);

$stmt = $pdo->prepare('SELECT id, username FROM users WHERE age > ?');
$stmt->execute([25]);
foreach ($stmt as $row) {
    echo $row['username'] . PHP_EOL;
}
Output
alice
bob

写入与事务

PHP
$pdo->beginTransaction();
$pdo->prepare('UPDATE accounts SET balance = balance - ? WHERE id = ?')
     ->execute([100, 1]);
$pdo->prepare('UPDATE accounts SET balance = balance + ? WHERE id = ?')
     ->execute([100, 2]);
$pdo->commit();
Older code uses mysqli, but PDO is database-agnostic, uniform and easier to prepare. Always set charset=utf8mb4 and ERRMODE_EXCEPTION.

Friends & Partners