PHP 用参数设置字段名

PHP set field-name with parameter

在我的php-脚本中,我在sql-服务器上执行。一切正常,但是:我不仅有变量值,还有变量字段名。因此,出于安全原因,我想将字段名称作为参数传递。

sql 会是

 $sql = "UPDATE  STA_Kunden
                SET     ? = ?
                WHERE   (KUN_KundeNo = ?)";

 $params = array($field, $value, $select);

但是field-name不能作为参数。因此,如果有人乱用字段名,则可能会出现 sql 注入。 我怎样才能设置这个安全?

谢谢 最大值

您必须将 $field 的值列入白名单并将其连接到查询中:

if (in_array($field, array('allowed_field_1', 'allowed_field_2'))) {
  $sql = "UPDATE STA_Kunden SET " . $field . " = ? WHERE (KUN_KundeNo = ?)";
  $params = array($value, $select);
}