Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP在MySQL中插入行-哪种方法更合适?_Php_Mysql_Database_Insert_Row - Fatal编程技术网

PHP在MySQL中插入行-哪种方法更合适?

PHP在MySQL中插入行-哪种方法更合适?,php,mysql,database,insert,row,Php,Mysql,Database,Insert,Row,使用PHP将行插入MySQL数据库有两种最显著的方法: 创建一个PHP文件,该文件使用一个循环来检测isset($\u POST['submit\u button']]是否已提交,如果表单尚未提交,则显示HTML表单。如果表单已提交,则在循环期间将数据插入MySQL表 在page1.HTML上创建HTML表单,提交表单时解析数据并插入page2.php上的MySQL表 这两种方法都可以很好地工作-但是,根据您自己的观点,其中一种方法比另一种好吗(例如安全性、可维护性等)?我可以说,从可用性的角度

使用PHP将行插入MySQL数据库有两种最显著的方法:

  • 创建一个PHP文件,该文件使用一个循环来检测
    isset($\u POST['submit\u button']]
    是否已提交,如果表单尚未提交,则显示HTML表单。如果表单已提交,则在循环期间将数据插入MySQL表

  • page1.HTML
    上创建HTML表单,提交表单时解析数据并插入
    page2.php
    上的MySQL表


  • 这两种方法都可以很好地工作-但是,根据您自己的观点,其中一种方法比另一种好吗(例如安全性、可维护性等)?

    我可以说,从可用性的角度来看,我更喜欢第一种方法,因为它允许您创建粘性表单,即

    <input id="foo" name="foo" value="<?php echo $_POST['foo']; ?>" />
    

    如果有选择,我会选择两者都不选择。相反,我会选择一种模式,通过这种模式,表单将发布到只处理输入,但不生成输出本身的辅助页面。处理成功或失败后,脚本将重定向到最终页面,该页面可能是原始表单页面,以显示消息、错误或请求重新提交

    通常,会话变量将用于将信息传递回最终重定向点,无论这是指从
    $\u POST
    重新填充表单的值,还是成功/错误代码

    这对于解决通过浏览器后退按钮意外重新提交表单的问题有很大帮助


    您发布到不同页面的第二种方法就像是一种不完整的PRG形式。

    在实际情况下,我会尽量避免使用第二个用户页面加载。
    page1.html
    通过AJAX提交到通过
    page2.php
    提供的web服务。是的,在很多情况下,这是不合适的,但是我能想到的最常见的模式是表单处理程序将行插入数据库,它们非常适合AJAX提交。

    这些不是“最值得注意的”方法,而且两种方法都不太理想。有很多方法,学习一种,然后使用它。@meagar你认为使用框架基本上是基于节省编码时间吗?@TroCraze部分地,它节省了前期和长期的时间。你将编写更少的代码,因此前期工作更少,维护代码的工作也更少。作为令人愉快的副作用是,您的代码将很好地组织起来(如果您正确地使用框架)更安全。总的来说,这不是花更少的时间,而是写更好的软件。@meagar非常感谢,我们将看看一些框架。如果我们使用场景1,但有一个内部循环来检查是否已经存在一行表单数据,这不一定和PRG类似吗(除了MySQL需要搜索数据库才能找到重复项之外?@TronCraze不,它不会太相似,因为它会缺少PRG的关键组件-表单处理代码永远不会与表单显示代码驻留在同一个脚本中。