原文地址:https://mariadb.com/resources/blog/developer-quickstart-php-data-objects-and-mariadb/
原文作者:rob hedgpeth
,我介绍了使用php的,来连接mariadb数据库并与之通信的过程。最后,当你写php代码来连接mariadb并与之交互时,你可能会使用两个常用选项之一:mysqli 或者 。
pdo插件旨在定义一个轻量级、一致性的接口,用在php访问数据库,就像mysqli一样。实际上,pdo和mysqli都提供了一个面向对象的api,但是mysqli也提供了一个面向过程的api,这使得php新手更容易理解。
现在,如果您熟悉原生的php mysql驱动,您可能会发现迁移到面向过程的mysqli接口更加容易。另一方面,一旦您掌握了pdo,您可以使用它连接任何数据库,这对于从另一个数据库切换到mariadb非常有用。
在这篇文章,我将深入pdo并演示如何使用它与mariadb进行通信。 因此,让我们进入一个应用程序,了解如何使用pdo连接和查询mariadb数据库。
本文中,我将重点介绍使用pdo连接mariadb数据库并与之通信的一些基本细节。我探讨的所有内容都将基于rolodex应用程序的代码,如果您想深入了解代码,可以查看。
准备数据库
在开始编码之前,重点要注意的是这将使用一个名为rolodex
的数据库。
create database `rolodex`;
数据库rolodex
包含一张表,contacts
,它用于存储基本信息。
create table `rolodex`.`contacts` (
`id` int(11) not null auto_increment,
`name` varchar(100) not null,
`age` int(3) not null,
`email` varchar(100) not null,
primary key (`id`)
);
rolodex应用运行所需的sql可以从这个文件里找到 。
配置应用
为了方便在rolodex php应用中使用mariadb数据库,我创建了一个名为 的新文件,它包含了配置项和数据库连接对象来在跨php页面中重用。pdo扩展便于与底层mariadb数据库进行连接和通信。
config.php
$dsn = "mysql:host=;dbname=rolodex;charset=utf8mb4" ;
$options = [
pdo::attr_emulate_prepares => false, // disable emulation mode for "real" prepared statements
pdo::attr_errmode => pdo::errmode_exception, // disable errors in the form of exceptions
pdo::attr_default_fetch_mode => pdo::fetch_assoc, // make the default fetch be an associative array
];
try {
$pdo = new pdo($dsn, "" , "" , $options);
}
catch (exception $e) {
error_log($e->getmessage());
exit('something bad happened');
}
?>
在config.php文件中,我首先定义了变量,包含主机地址、用户名、密码和默认数据库等,这些变量用于创建新的,该对象包含各种配置项,您可以使用它来定制您的环境。
执行sql
使用并重用 config.php
中的pdo
连接很简单,只需在另一个php页面中引用php代码库即可。
// include the database connection file
include_once("config.php");
...
?>
然后,有了已建立的连接,您就可以使用pdo扩展的多种功能,包括使用 执行查询。注意,我还演示了如何将结果直接映射到一个名为 contact 的类。
使用 pdo::query 查询 contants:
// include the database connection file
include_once("config.php");
// php class
class contact {
public $id;
public $name;
public $age;
public $email;
}
// fetch contacts (in descending order)
$contacts = $pdo->query( "select * from contacts order by id desc")->fetchall(pdo::fetch_class, 'contact');
?>
或者,在需要处理动态插入参数值的情况下,可以使用 。
插入数据
使用 pdo::prepare 插入 contacts
$stmt = $pdo->prepare("insert into contacts (name,age,email) values(?, ?, ?)");
$stmt->execute([$name, $age, $email]);
更新数据
使用 pdo::prepare 更新 contacts
$stmt = $pdo->prepare("update contacts set name = ?, age = ?, email = ? where id = ?");
$stmt->execute([$name, $age, $email, $id]);
删除数据
使用 pdo::prepare 删除 contacts
$stmt = $pdo->prepare("delete from contacts where id = ?");
$stmt->execute([$id]);
如您所见,开始使用pdo和mariadb很容易,但我们只触及了其表面。如果你想亲自看看php和mariadb还能做些什么,可以从新的github仓库 中rolodex应用程序的完整源码开始。
了解更多
如果您想了解更多关于json和mariadb的功能,或者关于mariadb的许多其他特性和功能,请务必查看和我们新的。在那里您可以找到更多类似的内容,横跨了多种其他技术、用例甚至编程语言。
您还可以在中更深入地了解mariadb功能。
和往常一样,感谢我们优秀的社区!如果您想参与贡献,可以在上找到我们,或直接发送反馈到邮箱developers@mariadb.com,或加入新的!