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

时间:2018-12-07 19:15:49

标签: php mysqli mysql-real-escape-string

我有一些代码可以通用化构建SQL字符串,以通过(1)将form元素的“名称”设置为与其对应的表列相同的方式,以及(2)构建SQL字符串以将记录插入表中。字段名称=>值对的数组。我是这样的:

$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 . ")";

之所以这样做,是因为表单上有很多“是/否”复选框,因此可以节省键入错误等。

这很好用,除了两个需要在插入数据库之前需要“ $ 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; 
    }

我很高兴知道我是否有语法错误,或者我找不到想要的东西。 预先感谢您的任何有用答复。

1 个答案:

答案 0 :(得分:0)

您不必将函数调用放在foreach标头中,而是将其放在正文中。

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