什么是PDO
PDO全称是PHP Data Objects,是PHP操作数据库的一种方式,是一个轻量级的、高效的、灵活的、安全的PHP扩展库,是PHP的一个标准数据库接口层,可以同时支持多种类型的数据库,如MySQL、PostgreSQL、Oracle和SQL Server等。
为什么要使用PDO
使用PDO来操作数据库有很多好处,如:
安全性:PDO具有自动防范SQL注入等数据库攻击的特性,可以有效地防范SQL注入攻击。
灵活性:PDO可支持多种数据库,方便了程序的移植性,开发者无需考虑数据库不同之处。
性能:相比于其他的数据库扩展,PDO操作MySQL数据库的性能更高一些,因为PDO使用了预处理的技术,可以减少网络传输和数据库解析的次数,提高程序的效率。
如何使用PDO
使用PDO操作数据库需要以下步骤:
连接数据库
try {
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
} catch (PDOException $e) {
echo "Error!: " . $e->getMessage() . "
";
die();
}
首先使用PDO的构造函数连接数据库,构造函数的参数分别是数据库的类型、主机名、数据库名称、用户名和密码,这是连接MySQL数据库时的参数,其他类型数据库的连接参数有所差别。如果连接数据库失败,可以使用try-catch结构捕获异常信息。
执行SQL语句
PDO操作数据库的基本方法是使用exec()、query()和prepare()方法,这三种方法分别用于执行SQL语句。
exec()方法:用于执行SQL语句并返回影响的行数。
$sql = "INSERT INTO students (name, age) VALUES ('Tom', 20)";
$rowCount = $dbh->exec($sql);
echo "Affected rows: " . $rowCount;
这段代码使用了exec()方法向students表中插入一条数据,返回插入行数并输出。
query()方法:用于执行查询SQL语句。
$sql = "SELECT * FROM students";
$stmt = $dbh->query($sql);
foreach($stmt as $row) {
print $row['name'] . "\t" . $row['age'] . "\n";
}
这段代码使用了query()方法查询students表中的所有记录,并输出所有记录的name和age字段值。
prepare()方法:用于执行预处理SQL语句。
$sql = "SELECT * FROM students WHERE age > ?";
$stmt = $dbh->prepare($sql);
$stmt->execute(array(18));
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($rows as $row) {
print $row['name'] . "\t" . $row['age'] . "\n";
}
这段代码使用了prepare()方法执行了一条预处理语句,并传入参数18进行查询,查询结果同样为students表中年龄>18的记录。
关闭数据库连接
$dbh = null;
关闭数据库连接使用PDO类的null方法即可。