$mysqli->escape_string - 是否可以在不指定确切字段名的情况下使用

$mysqli->escape_string - can it be used without specifying exact field name

我有代码通过 (1) 将表单元素的 'name' 设置为与table 它对应的列,以及 (2) 构建字段名称 => 值对的数组。我这样做:

$fldArray = array();
foreach($_POST as $field => $value) {
    $fldArray[$field] = $value; //create a field => value array
}

这让我可以像这样轻松构建 SQL 语句:

    $visit_SQL = "INSERT INTO visits (";
        foreach ($fldArray as $key => $value) {
                 $flds .= ($key) . ", " ; // sets up all the field names.

然后我做类似的事情来生成 SQL 语句的 'VALUES' 部分。然后我只需要添加 provider_id 信息

 $visit_SQL = $visit_SQL . "provider_id, " . $flds . ") VALUES (" . $user_ID . ", " . $vals . ")";

我这样做的原因是表单上有大量 Yes/No 复选框,因此可以避免输入错误等问题。

除了两个文本输入需要 "$mysqli->escape_string(['field_name']) 在插入数据库之前处理撇号等之外,这很好用。 我证明了以下适用于显式字段名称,

 $test = $mysqli->escape_string($_POST['visit_notes']);  

  print_r($test) ;

但是,我不能把它归纳为这个说法(从上面):

   foreach($_POST as $field => $mysqli->escape_string($_POST[$value])) {
    $fldArray[$field] = $value; 
    }

我很想知道我是否有语法错误或者我正在寻找的东西是不可能的。 预先感谢您提供任何有用的回复。

您不要将函数调用放在 foreach header 中,而是放在 body.

foreach($_POST as $field => $value) {
    $fldArray[$field] = $mysqli->escape_string($value); 
}