2015-07-23 2 views
0

Я пытаюсь прочитать файл данных и вставить в таблицу в mySQL. Я попытался построить массив и размытие, а также цикл foreach, подобный этому, но только вернусь к первой строке таблицы.Вставка нескольких значений массива в базу данных

<?php 
$str = file_get_contents('-'); 
$con = mysqli_connect('-', '-', '-','-'); 
$dataArray = explode("|",$str); 
$blahArray = array(); 
foreach($dataArray as $info){ 
      $pD = unserialize($info); 
      $pD->*->*->*; 
      $pL = $pD->*->*->*[0]; 
      $blah = $pL->BLAH; 
      array_push($blahArray,$blah);  
} 
foreach($blahArray as $val){ 
      $sql = "INSERT INTO table (BLAH) 
        VALUES('$val')";    
      mysqli_query($con,$sql); 
      } 
?> 

У меня есть много полей данных для ввода, но для отладки я просто пытаюсь это сделать. Любая помощь или предложения будут очень признательны!

+0

У вас возникли ошибки? Так вы говорите, что только первый «INSERT», который вы делаете, успешный? –

+0

Нет ошибок, успехов в том, что одна строка была добавлена, но должно быть 90. – user69309

+0

Вы должны опубликовать схему таблицы 'property', включая информацию для столбца первичного ключа. –

ответ

0

Я не могу сказать наверняка, что случилось с вашим кодом, но здесь является модификацией вы можете сделать, который может сказать вам, что происходит:

foreach($apnArray as $val) { 
    $sql = "INSERT INTO property (APN) VALUES('$val')";    
    $result = mysqli_query($con, $sql); 
    if (false===$result) { 
     printf("error: %s\n", mysqli_error($con)); 
    } 
} 

Проверьте на две вещи. Во-первых, убедитесь, что вы на самом деле зацикливались 90 раз. Во-вторых, посмотрите, выполняется ли каждый запрос INSERT с ошибкой или без нее.

Update:

Основываясь на ваш комментарий, кажется, что у вас есть первичный ключ с ограничением уникальности, которое не набор для Autoincrement. В запросе INSERT вы устанавливаете значение только для столбца APN и ничего больше. Это означает, что MySQL использует значение по умолчанию (0) для этого первичного ключа. Решение вашей проблемы состоит в передаче уникального значения для первичного ключа или, чтобы установить этот столбец первичного ключа для автоинкремента.

+0

Итак, теперь я получаю эту ошибку 90 раз !: error: Duplicate entry '0' для ключа 'PRIMARY' – user69309

+0

Хорошо, я вижу сейчас. Спасибо! – user69309

0

Попробуйте это:

$sql = "INSERT INTO property (APN) 
        VALUES"; 
foreach ($apnArray as $val) { 
    $sql .= "('$val'),"; 
} 
$sql = trim($sql, ","); 
mysqli_query($con, $sql); 
Смежные вопросы