-1

潜在雇主在看到以下功能时会怎么想:

function updTable{$table, $primary, $id, $key, $value){
    $primary = mysql_real_escape_string($primary);
    $id = (int) $id;
    $key = mysql_real_escape_string($key);
    $value = mysql_real_escape_string($value);
    $table = mysql_real_escape_string($table);

    mysql_query("UPDATE `{$table}` SET
                `{$key}`=`{$value}` 
                WHERE `{$primary}` = {$id}");

}

这是不好的做法吗?有没有我应该阅读和了解的关于一般 php / mysql 设计指南(不是语法)的好文章?

4

1 回答 1

2

您处理数据库交互的方式是从过去开始的。 准备好的语句现在是常态,可以阻止许多与 SQL 相关的攻击。

此外,根据您的系统设计,您永远不需要这样的功能。如果您使用的是 MVC 模式,您将在模型中编写一个方法来处理某种类型的更新,而不仅仅是通用表更新。

看看这个函数,如果你想更新那个表中的多个列会发生什么?例如,如果您要更新 3 列,则必须调用数据库 3 次,而不是一次。

如果您想要一个非常通用的数据库层,请查看Doctrine或制作与它非常相似的东西。

于 2012-06-14T17:22:34.210 回答