2016-10-26 3 views
0

Итак, я использую этот бит кода для извлечения данных из XML-файла. Когда я пытаюсь сделать вставку, я получаю сообщение об ошибке. Если я использую тот же вывод и INSERT в MySQL Workbench, он отлично работает. Поэтому я предполагаю, что это то, как PHP интерпретирует данные. Я ударился головой о стену, поэтому любая помощь приветствуется. Ниже приведен код:MySqli Вставить ошибку при множественной вставке

<?php 

$completeurl = "gps.kml"; 
$xml = simplexml_load_file($completeurl); 

$placemarks = $xml->Document->Folder->Placemark; 
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 
$con=mysqli_connect("localhost","root","V1ct0ry4439253","gps"); 
//Check connection 
if (mysqli_connect_errno()) 
{ 
echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

$query = ''; 
$run=''; 
for ($i = 0; $i < sizeof($placemarks); $i++) { 
$coordinates = $placemarks[$i]->name; 
$cor_d = explode(' ', $placemarks[$i]->Point->coordinates); 
$qtmp=array(); 
foreach($cor_d as $value){ 
     $tmp = explode(',',$value); 
     $ttmp=$tmp[1]; 
     $tmp[1]=$tmp[0]; 
     $tmp[0]=$ttmp; 
     $qtmp= '' . $tmp[0] . '' .$tmp[1].''; 
} 

$cor_d = $qtmp; 
$query .='(\''.$coordinates.'\', \''.$cor_d.'\')'; 
$run .="INSERT INTO gps_history (name, coordinates) VALUES ".$query.""; 

//break; 
} 
echo $run; 
mysqli_query($con,$run); 

mysqli_close($con); 
?> 
+0

Так вы говорите, что если вы выгрузите вывод из 'echo $ run' в MySQL Workbench, он работает без ошибок? –

+0

Да, сэр это правильно. По крайней мере, последний запрос, который является инкрементным, поскольку он подсчитывает каждую запись. –

+0

Вы выполняете echo $ run внутри своего цикла, а также вне своего цикла. Похоже, вы делали много разных попыток исправить это (есть свидетельства множественного кода отладки). Я вижу, что $ cor_d и $ qtmp фактически не используются (кажется) ... Возможно, это поможет, если вы можете скопировать/вставить вывод эха здесь (в качестве комментария или отредактировать ответ), и мы могли бы помочь устранить его Больше. – LStarky

ответ

0

Многие соединения с базой данных по умолчанию не позволяет несколько запросов, нанизанные в одном операторе, разделенных запятыми (в качестве защиты от одного типа SQL инъекций). Возможно, это то, что вы испытываете.

Попробуйте переместить mysqli_query($con,$run);внутри ваш цикл и убедитесь, что он работает только по одному запросу за раз.

+0

Если это не решение, можете ли вы точно указать, какая ошибка вы получение/проводы? И включить фактический отрывочный эхо-вывод из нескольких команд 'echo $ run ;'? – LStarky

+0

Вот сообщение об ошибке, которое я получаю: Неустранимая ошибка: исключение исключения mysqli_sql_exception с сообщением «У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с:; INSERT INTO gps_history (имя, координаты) VALUES ('SC Assessor P9', '38 .51275 'в строке 1' в C: \ xampp \ htdocs \ gps.php: 36 Трассировка стека: # 0 C: \ xampp \ htdocs \ gps.php (36): mysqli_query (Object (mysqli), 'INSERT INTO gps ...') # 1 {main} брошен в C: \ xampp \ htdocs \ gps.php в строке 36 –

+0

Я попытался поставить запрос в цикле и все равно получить ошибку –

Смежные вопросы