使用 PHP 和 MySQL 进行真实世界的 OOP

使用 php 和 mysql 进行真实世界的 oop

从机器人到自行车的许多示例都可以作为对 OOP 的简单解释。然而,我更喜欢演示 OOP 如何在现实场景中发挥作用,特别是针对程序员。一个实际的示例是创建 MySQL CRUD(创建、读取、更新和删除)类。这样,无论数据库的设计如何,程序员都可以有效地管理项目中的条目。

一旦我们确定了需求,创建类的基本结构就相对简单了。首先,我们需要确保我们可以进行基本的 MySQL 操作。为了实现这一点,我们需要实现以下功能:

选择插入删除更新connect断开连接

让我们快速看看我们的类定义是什么样的:

db_host = $db_host;        $this->db_user = $db_user;        $this->db_pass = $db_pass;        $this->db_name = $db_name;    }    public function connect() {}    public function disconnect() {}    public function select() {}    public function insert() {}    public function delete() {}    public function update() {}}

登录后复制

基本上,它是一个名为 Database 的骨架类,它代表数据库连接并提供与数据库交互的方法。我们定义了不同的私有属性,例如 $db_host、$db_user、$db_pass、$db_name 和 $con。该类用于存储数据库连接详细信息和连接对象本身。

立即学习“PHP免费学习笔记(深入)”;

在下一节中,我们将详细介绍此类的实际实现。

实现数据库类

在本节中,我们将实现执行不同数据库操作所需的方法。

connect 方法

继续添加 connect 方法,如以下代码片段所示。

con) {        $this->con = mysqli_connect($this->db_host, $this->db_user, $this->db_pass);        if($this->con) {            $seldb = mysqli_select_db($this->con, $this->db_name);            if($seldb) {                return true;             } else {                return false;            }        } else {            return false;        }    } else {        return true;    }}

登录后复制

connect 方法的目的是使用 mysqli 扩展建立与 MySQL 数据库的连接。首先,我们检查是否已经存在与数据库的连接,如果存在,该方法只是返回 true 表示连接已经建立,无需重新连接。如果没有连接,它会尝试使用 mysqli_connect 函数连接到数据库。

一旦数据库连接成功,就会通过调用mysqli_select_db函数来选择数据库。最后如果数据库选择成功,则返回true,表示连接建立,数据库选择。如果连接或数据库选择失败,则返回 false。

disconnect 方法

让我们看一下 disconnect 方法。

con) {        if (mysqli_close($this->con)) {            $this->con = false;             return true;        } else {            return false;        }    }}

登录后复制它检查是否存在活动的数据库连接,如果存在,则使用 mysqli_close() 函数关闭连接,并将 $this->con 属性设置为 false。

select 方法

这是最重要且经常使用的方法之一。首先,我们创建 tableExists 方法,用于检查 MySQL 数据库中该表是否存在。

con, 'SHOW TABLES FROM '.$this->db_name.' LIKE "'.$table.'"');    if($tablesInDb) {        if(mysqli_num_rows($tablesInDb) == 1) {            return true;        } else {            return false;        }    }}

登录后复制

接下来,我们继续实现 select 方法。

tableExists($table)) {        $result = $this->con->query($q);        if($result) {            $arrResult = $result->fetch_all(MYSQLI_ASSOC);            return $arrResult;        } else {            return false;        }    } else {        return false;    }}

登录后复制

它用于从数据库中检索记录。它首先使用输入参数构建 SQL 查询字符串。它检查数据库中是否存在指定的表,如果存在,则执行查询。如果查询成功,结果行将作为关联数组获取并返回。如果查询失败,该方法返回false。如果数据库中不存在指定的表,也返回false。

insert 方法

让我们看一下 insert 方法,如以下代码片段所示。

tableExists($table)) {        $insert = 'INSERT INTO '.$table;        if ($rows != null) {            $insert .= ' ('.$rows.')';        }        for ($i = 0; $i con, $values[$i]);            if (is_string($values[$i])) {                $values[$i] = '"'.$values[$i].'"';            }        }        $values = implode(',', $values);        $insert .= ' VALUES ('.$values.')';        $ins = mysqli_query($this->con, $insert);        if ($ins) {            return true;        } else {            return false;        }    }}

登录后复制

它用于使用 mysqli 扩展将数据插入到 MySQL 数据库的表中。该函数采用三个参数:表名、要插入的值以及要插入的列(可选)。首先,它检查数据库中是否存在指定的表,如果存在,则构造 SQL 查询以使用提供的值和列插入数据。我们使用 mysqli_real_escape_string 函数来清理任何字符串值。

最后使用mysqli_query()函数执行查询,如果查询成功,该函数返回true,否则返回false。

delete 方法

让我们快速浏览一下 delete 方法。

tableExists($table)) {        if ($where == null) {            $delete = 'DELETE '.$table;         } else {            $delete = 'DELETE FROM '.$table.' WHERE '.$where;         }        $del = $this->con->query($delete);        if ($del) {            return true;         } else {           return false;         }    } else {        return false;     }}

登录后复制

它用于从数据库中删除表或行。

update 方法

这也是我们更新数据库信息的重要方法之一。

update 方法实现应该如下所示。

tableExists($table)) {        // Parse the where values        // even values (including 0) contain the where rows        // odd values contain the clauses for the row        for ($i = 0; $i con, $value)."'";        }                $update .= implode(',', $setValues);        $update .= ' WHERE ' . $where;                $query = $this->con->query($update);                if ($query) {            return true;        } else {            return false;        }    } else {        return false;    }}

登录后复制

update 方法具有三个参数:$table、$rows 和 $where。然后解析 $where 数组以生成用于更新查询的 SQL WHERE 子句。解析 $rows 数组以生成用于更新查询的 SQL SET 子句。数组键表示列名称,而数组值表示列的新值。我们使用 mysqli_real_escape_string 函数来清理任何字符串值。

至此,我们完成了数据库操作所需方法的创建。您可以将其另存为 Database.php 文件。

在下一节中,我们将了解如何使用它。

如何使用数据库类

首先,我们在数据库中创建一个 MySQL 表,以便我们可以测试该表上的 CRUD 操作。

继续运行以下 SQL 来创建表。

CREATE TABLE `mysqlcrud` (    `id` INT(11) NOT NULL AUTO_INCREMENT,`name` VARCHAR(255) NOT NULL,`email` VARCHAR(255) NOT NULL,PRIMARY KEY (`id`));

登录后复制

它应该在您的数据库中创建 mysqlcrud 表。

如何插入新行

让我们看看如何插入新行。

connect()) {    $db->insert('mysqlcrud', array(1,"Foo Bar","foobar@yahoo.com"));} else {    echo "There was some error connecting to the database.";}?>

登录后复制

首先,我们创建了一个新的 Database 对象,并将数据库凭据作为参数传递。您需要将其替换为您的凭据。接下来调用Database类的connect方法来建立与数据库的连接。如果连接成功,则调用 insert 方法,并将表名作为第一个参数,将新行的值数组作为第二个参数。

如果一切顺利,它应该在 mysqlcrud 表中创建一个新行。

如何更新行

让我们看看更新操作是如何工作的。

connect()) {    $db->update('mysqlcrud',array('name'=>'Updated Foo Bar'), array('id',1));} else {    echo "There was some error connecting to the database.";}?>

登录后复制

如您所见,我们调用了 update 方法来更新该行的 name 列。

如何删除行

接下来,让我们看看如何删除特定行。

connect()) {    $db->delete('mysqlcrud', "`id` = '1'");} else {    echo "There was some error connecting to the database.";}?>

登录后复制

它应该删除 id 等于 1 的行。

如何检索记录

让我们看看如何从表中检索所有记录。

connect()) {    $rows = $db->select('mysqlcrud');} else {    echo "There was some error connecting to the database.";}?>

登录后复制

如您所见,select 方法允许我们从所需的表中获取所有记录。

这就是您如何使用我们的类执行 CRUD 操作。

以上就是使用 PHP 和 MySQL 进行真实世界的 OOP的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1791899.html

(0)
上一篇 2025年2月21日 03:44:53
下一篇 2025年2月21日 03:47:07

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论