Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.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和HTML中使用相同的列名_Php_Mysql_Database_Performance - Fatal编程技术网

Php 在MySQL和HTML中使用相同的列名

Php 在MySQL和HTML中使用相同的列名,php,mysql,database,performance,Php,Mysql,Database,Performance,我正在开发一个PHP、MySQL应用程序。我遵循这个原则,在MySQL表中使用与HTML变量名相同的列名 我发现这确实是一种很好的设计技巧: 我循环遍历$\u POST变量名,并更新表。由于列名和变量名相同,因此在更新数据库时出错的可能性较小 遵循这样的设计技巧是一种好的实践吗?我不是专家,这会暴露我们的数据库结构吗 我也在考虑上述设计的一个变体,在创建数据库列时,我在HTML变量中添加了一些字符串。这对列名很有效,这是一个很好的实践。我已经成功地将它用于表和视图 其他人指出了一些值得重复的事情

我正在开发一个PHP、MySQL应用程序。我遵循这个原则,在MySQL表中使用与HTML变量名相同的列名

我发现这确实是一种很好的设计技巧:

  • 我循环遍历$\u POST变量名,并更新表。由于列名和变量名相同,因此在更新数据库时出错的可能性较小
  • 遵循这样的设计技巧是一种好的实践吗?我不是专家,这会暴露我们的数据库结构吗


    我也在考虑上述设计的一个变体,在创建数据库列时,我在HTML变量中添加了一些字符串。

    这对列名很有效,这是一个很好的实践。我已经成功地将它用于表和视图

    其他人指出了一些值得重复的事情:你需要保护你的应用程序免受黑客攻击。如果一个坏蛋试图向您发送一个包含虚假列名的web请求,您肯定不希望您的代码传递这些列名。试图在对数据库服务器的请求中使用来自不受信任源的列名会带来很大的安全风险,尤其是对于插入、更新或删除。你需要特别注意应用程序中确保列名干净的部分

    需要注意的是:区分大小写。在MySQL中,您在列名大小写敏感方面处于良好状态。但是表名情况可能会根据MySQL服务器运行的操作系统而改变。为了实现最佳的可移植性,您可能应该将表名全部小写。这是关于那个主题的一篇文章


    如果您将此项目移植到Oracle,您会发现您的列名中存在区分大小写的混淆。

    好吧,它会将您的结构暴露给知道您正在做的事情的人!但您可能已经采用了其他最佳做法来保护数据。我也这么做,我认为公布数据库列名没有问题,但在编写查询时应特别小心,确保它们已被正确清理,不幸的是,参数化查询不能用于过滤列名。请确保将列名列入白名单。攻击者可以轻松地将SQL注入作为列名发布,因此请确保转义列名,如@Ghost所说。。列出白名单