$ mysqli-> escape_string - можно использовать без указания точного имени поля - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть код, который обобщает построение строки SQL для вставки записи в таблицу путем (1) установки «имени» элемента формы таким же, как столбец таблицы, которому он соответствует, и (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.

Затем я делаю что-то похожее, чтобы сгенерировать часть VALUESОператор SQLЗатем мне нужно только добавить информацию провайдера

 $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 голосов
/ 07 декабря 2018

Вы не помещаете вызов функции в заголовок foreach, вы делаете это в теле.

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