Конкатенация с добавлением в нее не работает должным образом

Вот мой 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")` 

Где первый ( после VALUES?

+ и . имеют тот же приоритет оператора , но остаются ассоциативными. Средства после первого конкатенации:

  '(' . (int) $ data ['event_id'] 

Строка добавлена ​​с вашим ключом, например

 "($data['event_id']" + $key 

Таким образом, строка преобразуется в целое число в этом числовом контексте и исчезает . Чтобы решить эту проблему, используйте круглые скобки () вокруг вашего добавления.

Это происходит из-за приоритета оператора. Попробуйте –

 $sql .= '(' . ((int)$data['event_id']) . ', ' . ($key + 1) . ', ' . ((int)$val['file_id']) . ', "' . addslashes($val['url']) . '"), ';