gpt4 book ai didi

php - 所有表单的单个 php 文件

转载 作者:行者123 更新时间:2023-11-29 00:28:44 25 4
gpt4 key购买 nike

我的网站上有四种表单将用户输入发送到我的 MySQL 数据库中的四个不同表。将这四种表单的所有查询放在一个 php 文件中是一种好习惯吗?

目前,我为每个表单准备了不同的 php 文件。例如。 form-abc.html 有一个abc.php 与数据库通信,form-def.html 有一个def.php 等等。

由于所有这些形式的 mysqli 连接都是相同的,我想知道是否可以从包含所有查询/函数的 php 文件中调用相关函数/查询?如果可能的话,怎么做?

最佳答案

总的来说,将代码放在一个文件中并不是好的做法,特别是如果四个查询在它们的目的方面没有明显的相关性,但让每个文件都包含要连接的代码也是糟糕的设计到数据库,也可以手工制作查询字符串。

您应该寻求将通用代码分解为实用程序库,您的出发点是拥有一个返回数据库连接的库函数。更改连接详细信息、数据库名称等需要一次更改而不是四次更改,因此减少了出错的机会。您的四个文件也应该不需要知道如何连接到数据库,删除代码就可以实现这一点。

与其手工设计查询,否则有可能无法正确转义数据,最终您将编写不必要的代码并将自己锁定到特定的数据库类型,您应该着眼于拥有库例程来帮助解决这个问题。 PHP 已有一些库,或者您可以开发自己的可能更适合这项工作的库。

从广义上讲,您最终可能会得到如下代码:


<?php

include_once "db_utils.php";

$db = DB::get_instance();

if (isset($_POST['form_submitted'])) {
// Validation etc.
$customers = $db->table('customers');

$customers->insert(array('name' => $_POST['name'], 'email' => $_POST['email']));
// ...
}

include 将包括您的数据库实用程序,在这种情况下提供一个名为 DB 的类和一个表类。 get_instance() 将是一个静态方法,用于提供封装连接的数据库实例。我们假设它知道如何获取连接信息,因此不需要将其提供给方法。 table() 方法将提供一个数据库表的实例,该实例知道如何对数据库表执行操作。表实例上的 insert() 方法将采用键/值对数据数组,转义每个项目的值并执行插入。

在这种情况下,将查询与需要它们的文件保持在一起应该可以简化维护。

整个网站的另一种方法是使用框架。在这种情况下,业务逻辑、数据库管理和渲染代码将被分离,这对于非平凡的系统通常是一个可取的愿望。如果一个人以一种特别的方式将一个系统与这个想法拼凑在一起,这可能会很快导致一个无法维护的系统,开发人员会努力寻找在请求中起作用的相关代码,但是框架会通过以下方式强加一个结构命名和布局约定将在很大程度上缓解这种情况。

不过,对于您现在所处的位置,只是旨在识别重复代码,将其排除在外,寻找一些数据库,这样您就不会手工制作查询(如果您现在正在做的话),并保持系统简单。

关于php - 所有表单的单个 php 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17635457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com