Вот мой PHP-код с SQL-запросом, но результат не такой, как ожидалось:
$sql = 'INSERT INTO `event_footers` (`event_id`, `order`, `file_id`, `url`) VALUES ';
foreach($all_footers as $key => $val){
$sql .= '('.(int)$data['event_id'].', '.$key + 1 .', '.(int)$val['file_id'].', "'.addslashes($val['url']).'"), ';
}
$sql = rtrim($sql, ', ');
var_dump($sql);
exit;
И я получаю SQL-запрос, как это:
`INSERT INTO `event_footers` (`event_id`, `order`, `file_id`, `url`) VALUES 1, 2135, "http://11.lt"), 1, 2136, "http://22.lt"), 1, 2140, "http://44.lt")`
Где первый (
после значения?
+
а также .
имеют те же приоритет оператора, но остаются ассоциативными. Средства после первой конкатенации:
'(' . (INT) $ данных [ 'event_id']
Строка была добавлена с вашим ключом, например,
"($data['event_id']" + $key
Итак Строка преобразуется в целое число в этом числовом контексте а также исчезает. Чтобы решить эту проблему, используйте скобки ()
вокруг вашего дополнения.
Это происходит из-за приоритета оператора. Попробуйте с —
$sql .= '('
. ((int)$data['event_id']) . ', '
. ($key + 1) . ', '
. ((int)$val['file_id']) . ', "'
. addslashes($val['url']) .
'"), ';