【发布时间】:2014-10-16 12:29:35
【问题描述】:
用常量定义所有表和列名然后在查询字符串中使用它们是一种好的编码风格吗? 我这样做是因为每当我更改数据库中的某些内容时,我都可以简单地更改常量值而不是更改所有内容。 例如,这是我在单独文件中的数据库定义:
define("DB_TBL_USER", "user");
define("DB_USER__PK_USER_ID", "pk_user_id");
define("DB_USER__PASSWORD", "password");
define("DB_USER__EMAIL", "email");
define("DB_USER__FIRST_NAME", "first_name");
define("DB_USER__LAST_NAME", "last_name");
define("DB_USER__GENDER", "gender");
在我的数据库类中,我构建了这样的查询(在 register_user() 方法中!):
$queries[]="INSERT INTO ".
constant('DB_TBL_USER'). " ( ".
constant('DB_USER__PASSWORD').",".
constant('DB_USER__EMAIL').",".
constant('DB_USER__FIRST_NAME').",".
constant('DB_USER__LAST_NAME').",".
constant('DB_USER__GENDER').") ".
"VALUES ("."
$password,
$email,
$first_name,
$last_name,
$gender
";
然后将其他查询放入 queries[] 数组并循环执行。
有没有更简单有效的方法?
【问题讨论】:
-
也许您应该多担心 SQL 注入攻击而不是轻松更改。
-
感谢@IgnacioVazquez-Abrams,但如果您的意思是密码加密和清理字符串,我已经知道它们并且我实现了它们。我刚开始学习 php 和 mysql,我知道以后我的数据库中会有很多东西要更改。
-
也许你可以尝试流行MVC框架中的ORM部分(php:Codeigniter,Yii等...),你可能不需要在sql查询的上下文中重新发明轮子,结果生成 - ellislab.com/codeigniter/user-guide/database/active_record.html
-
@buddhi。我正在阅读文档。它会帮助我。谢谢