暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

[译] 快速开发:PHP数据对象和MariaDB

原创 严少安 2022-03-08
873

原文地址:https://mariadb.com/resources/blog/developer-quickstart-php-data-objects-and-mariadb/
原文作者:Rob Hedgpeth

上篇文章,我介绍了使用PHP的MySQL增强插件–MySQLi,来连接MariaDB数据库并与之通信的过程。最后,当你写PHP代码来连接MariaDB并与之交互时,你可能会使用两个常用选项之一:MySQLi 或者 PHP数据对象(PDO)

PDO插件旨在定义一个轻量级、一致性的接口,用在PHP访问数据库,就像MySQLi一样。实际上,PDO和MySQLi都提供了一个面向对象的API,但是MySQLi也提供了一个面向过程的API,这使得PHP新手更容易理解。

现在,如果您熟悉原生的PHP MySQL驱动,您可能会发现迁移到面向过程的MySQLi接口更加容易。另一方面,一旦您掌握了PDO,您可以使用它连接任何数据库,这对于从另一个数据库切换到MariaDB非常有用。

在这篇文章,我将深入PDO并演示如何使用它与MariaDB进行通信。 因此,让我们进入一个应用程序,了解如何使用PDO连接和查询MariaDB数据库。

developerphpquickstart.gif

本文中,我将重点介绍使用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可以从这个文件里找到 schema.sql

配置应用

为了方便在Rolodex PHP应用中使用MariaDB数据库,我创建了一个名为 config.php 的新文件,它包含了配置项和数据库连接对象来在跨PHP页面中重用。PDO扩展便于与底层MariaDB数据库进行连接和通信。

CONFIG.PHP

<?php $dsn = "mysql:host=<insert_host_address_here>;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, "<insert_user_here>", "<insert_password_here>", $options); } catch (Exception $e) { error_log($e->getMessage()); exit('Something bad happened'); } ?>

在config.php文件中,我首先定义了变量,包含主机地址、用户名、密码和默认数据库等,这些变量用于创建新的PDO连接对象,该对象包含各种配置项,您可以使用它来定制您的环境。

执行SQL

使用并重用 config.php中的PDO连接很简单,只需在另一个PHP页面中引用PHP代码库即可。

<?php // Include the database connection file include_once("config.php"); ... ?>

然后,有了已建立的连接,您就可以使用PDO扩展的多种功能,包括使用 PDO::query 执行查询。注意,我还演示了如何将结果直接映射到一个名为 Contact 的类。

使用 PDO::query 查询 contants:

<?php // 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

插入数据

使用 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仓库 PHP Data Object Quickstart 中Rolodex应用程序的完整源码开始。

了解更多

如果您想了解更多关于JSON和MariaDB的功能,或者关于MariaDB的许多其他特性和功能,请务必查看开发者中心和我们新的GitHub开发者代码中心组织。在那里您可以找到更多类似的内容,横跨了多种其他技术、用例甚至编程语言。

您还可以在官方文档中更深入地了解MariaDB功能。

和往常一样,感谢我们优秀的社区!如果您想参与贡献,可以在GitHub上找到我们,或直接发送反馈到邮箱developers@mariadb.com,或加入新的MariaDB社区对话(Slack)

最后修改时间:2022-03-08 14:05:54
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论