用于所有表单的单个php文件
我的网站上有四个表单,将用户输入发送到MySQL数据库中的四个不同表。将这四个表单的所有查询放在一个php文件中是否是一种好的做法 目前,每个表单都有一个不同的php文件。例如,form-abc.html有一个与数据库通信的abc.php,form-def.html有一个def.php等等用于所有表单的单个php文件,php,mysql,Php,Mysql,我的网站上有四个表单,将用户输入发送到MySQL数据库中的四个不同表。将这四个表单的所有查询放在一个php文件中是否是一种好的做法 目前,每个表单都有一个不同的php文件。例如,form-abc.html有一个与数据库通信的abc.php,form-def.html有一个def.php等等 由于所有这些表单中的mysqli连接都是相同的,我想知道是否可以从包含所有查询/函数的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']));
// ...
}
总的来说,将代码放在一个文件中不是一个好的做法,特别是如果四个查询在目的上没有明显的关联,但是让每个包含代码的文件连接到数据库,并且手工制作查询字符串,这也是一个糟糕的设计
您应该设法将公共代码分解到实用程序库中,起点是使用单个库函数返回到数据库的连接。更改连接详细信息、数据库名称等需要进行一次更改,而不是四次,这样可以减少出错的机会。您的四个文件也不需要知道如何连接到数据库,删除代码就可以做到这一点
与手工制作查询不同的是,在查询中有可能无法正确转义数据,并且最终编写的代码比需要的多,并且将自己锁定到特定的数据库类型,您应该让库例程来帮助完成这项工作。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']));
// ...
}
是的,我手工制作查询,主要是因为我对“库”一无所知。我在2000年学习了一些编程,并利用这些基本知识学习和实现了当时还不流行的语言。也就是说,我每天都在学习新的东西。我从php for mysql开始,然后出于安全原因(我的主机不支持PDO)切换到Mysqli。虽然我不知道你说的一些话是什么意思,但它给了我下一步需要寻找的东西的指针。那就是了!至于框架..那将是在我了解库之后@vinaya使用Mysqli还是PDO并不特别重要,它们只是一些不同的API:重要的是您使用的是参数化查询。是的,我手工制作查询,主要是因为我对“库”一无所知。我在2000年学习了一些编程,并利用这些基本知识学习和实现了当时还不流行的语言。也就是说,我每天都在学习新的东西。我从php for mysql开始,然后出于安全原因(我的主机不支持PDO)切换到Mysqli。虽然我不知道你说的一些话是什么意思,但它给了我下一步需要寻找的东西的指针。那就是了!至于框架..那将是在我了解库之后@vinaya使用Mysqli还是PDO并不特别重要,它们只是一些不同的API:重要的是您使用的是参数化查询。