gpt4 book ai didi

php - MySql 半动态表名

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

我正在使用 MySQL 数据库为每个“数据对象”存储单独的表,并使用 PDO 进行访问。表的名称存储在另一个数据库/表中,因此必须插入到任何抽象函数中才能写入正确的表,顺便说一下特定的列/行。在经历了很多挫折和未能阅读整个文档页面之后,我发现在使用 PDO 准备语句时无法绑定(bind)表名和列名。该死的。从那时起,我明白了为什么在准备过程中不能将变量用于这些字段(我也可以),现在是解决方法的时候了。我知道准备好的语句现在是公认的防止一阶 SQL 注入(inject)的 PHP 标准。我的问题:

关于 SO 的答案太多,从不可能到其他答案(请参阅下面的链接),因此我想通过一些有安全意识的人运行它来确保并在实现之前选择最安全的方法。使用 INFORMATION_SCHEME、全局变量或反引号的解决方法?白嘴鸦?

MySQL Stored Functions - Dynamic/Variable Table & Column Names

creating mysql tables with variable table names

Use of wildcards in mysql table name

注意:我知道动态表名被视为糟糕的设计,但我认为这只是半动态的,因为表名只有在验证和修改后才会永久存储在另一个表字段中,然后用作一个引用。

最佳答案

I'm using a MySQL database to store individual tables for each 'data object', and PDO for access.

这就是你做错的地方。所以,只是

不要使用 MySql 半动态表名。

这不是安全漏洞,而是违反了基本的数据库设计规则。

拜托,何不先学习正法呢?将对象存储在单个表中是可以的。你不会有任何问题。然而,它会让你省去很多麻烦,比你现在面临的这个愚蠢的问题要糟糕得多。

关于php - MySql 半动态表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18186799/

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