Как вы можете видеть в своем var_dump
-результате, данные, которые вы отправили на DBCreate
и, следовательно, на DBEscape
, выглядят как
array(
'dt_flight' => array(0 => '2018-06-13'),
'acft' => array(0 => 'VQ-BFD',
// and so on
)
Поэтому данные, отправленные вами на
// $value = array(0 => '2018-06-13') here
$value = mysqli_real_escape_string($link, $value);
И, конечно же, mysqli_real_escape_string
не очень любит массивы, поэтому вернет NULL
и, следовательно, вставит пустые данные в вашу таблицу.
Скорее всего, вы хотите устранить эту ошибку в вашейforeach($_POST["quote"]["dt_flight"])
, поскольку я полагаю, что вы отправили несколько данных о рейсе:
foreach($_POST["quote"]["dt_flight"] as $key => $text_field) {
// $key would be 0, for $_POST["quote"]["dt_flight"][0] = '2018-06-13'
$keyData = [];
foreach($_POST["quote"] as $field => $allFieldValues) {
// Walk over every field, and add the value for the same $key
if (is_array($data) && isset($allFieldValues[$key])) {
// Would add for example $keyData['acft'] = $_POST['quote']['acft'][0] = 'VQ-BFD';
$keyData[$field] = $allFieldValues[$key];
}
}
var_dump($keyData);
// Would look like array(
// 'dt-flight' => '2018-06-13',
// 'acft' => 'VQ-BFD',
// and so on
// )
$last_id = DBCreate('quote',$keyData,true);
$i++;
}
Хотя это не является частью вашего вопроса, я действительно рекомендую вам также позаботиться о моем комментарии на ваш вопрос оmysqli_real_escape_string
не является безопасным способом избежать имен столбцов (или имен таблиц и т. Д.).Например, со следующим решением:
function DBCreate($table, array $data, $insertId = false) {
// For each table the known columns
$columns = array( 'quote' => array('dt_flight', 'acft', '...') );
// Verify valid table given
if (!isset($columns[$table])) {
throw new InvalidArgumentException('No such table: ' . $table);
}
// Remove everything from data where the key is not in $columns[$table]
// = Remove everything where the column-name is non-existing or even an attempt to hack your system
$data = array_intersect_key($data, array_fill_keys($columns[$table], null));
if (!count($data)) {
throw new InvalidArgumentException('No (valid) data given at all');
}
// Next, continue with your implementation
}