2015-09-18 3 views
0

Я получил некоторые данные через почтовый метод. Я написал данные для массива теперь, как я могу написать данные da в таблицу mysql? образец восстановления данных показан ниже. я получаю эту ошибку: Ошибка, запрос не удалосьКак записать значения массива в таблицу mysql внутри каждого цикла?

if (isset($_POST['submit'])) { 
    $data = []; 
    foreach($_POST['checkbox'] as $rowNum) { 
     $data[] = explode("::", $_POST['opt'][$rowNum]); 
    } 
    var_dump($data); 

    $sku =$data[$rowNum][0]; 
    $description =$data[$rowNum][1]; 
    $location =$data[$rowNum][2]; 
    $quantitydate =$data[$rowNum][3]; 

    $link = mysqli_connect("somesite", "****", "*******", "******"); 
    // Check connection 
    if($link === false){ 
     die("ERROR: Could not connect. " . mysqli_connect_error()); 
    } 

    $query ="SELECT * FROM Test WHERE sku = '$sku'"; 
    $testResult = mysqli_query($link, $query) or die('Error, query failed');  

    if(mysqli_fetch_array($testResult) == NULL){ 
     $sql = "INSERT INTO test (ID, sku, description, location, quantitydate) VALUES ('$ID','$sku', '$description','$location', '$quantitydate',NOW())"; 
     if(mysqli_query($link, $sql)){ 
      echo "Records added successfully.<br /><br />"; 
     } else{ 
      echo "ERROR: Could not able to execute $sql. " . mysqli_error($link); 
     } 

     // close connection 
     mysqli_close($link); 
    }else 
     { 
      echo "Record Already Exist<br /><br />"; 
     } 
} 

Пример вывода:

// Output sample (selected row 2 and 4): 
array (size=2) 
    0 => 
    array (size=4) 
     0 => string 'SKU2' (length=4) 
     1 => string 'DESC2' (length=5) 
     2 => string 'LOC2' (length=4) 
     3 => string 'QUAN2' (length=5) 
    1 => 
    array (size=4) 
     0 => string 'SKU4' (length=4) 
     1 => string 'DESC4' (length=5) 
     2 => string 'LOC4' (length=4) 
     3 => string 'QUAN4' (length=5) 
+0

В чем проблема? Переверните «данные» и выполните запрос «INSERT INTO TABLE» со значениями из каждой строки. – Barmar

+0

я отредактировал свое сообщение, я попробовал выше, но продолжаю получать эту ошибку: Ошибка, запрос не выполнен – user1788736

+1

Изменить 'die ('Error, query failed')' to 'die (mysqli_error ($ link))', поэтому вы видите причину отказ. – Barmar

ответ

2

Используйте подготовленное заявление:

$stmt = mysqli_prepare($link, "INSERT IGNORE INTO tableName (sku, description, location, quantitydate) VALUES (?, ?, ?, ?)"; 
mysqli_stmt_bind_param($stmt, "ssss", $sku, $desc, $location, $quantitydate); 
foreach ($_POST['checkbox' as $rowNum) { 
    $row = explode('::', $_POST['opt'][$rowNum]); 
    $sku = $row[0]; 
    $description = $row[1]; 
    $location = $row[2]; 
    $quantitydate = $row[3]; 
    mysqli_stmt_execute($stmt); 
    if (mysqli_affected_rows($stmt) == 0) { 
     echo "SKU $sku already exists <br/><br/>"; 
    } 
} 

Если у вас есть уникальный индекс на sku колонке, вам не нужно сначала выполнить запрос SELECT. INSERT IGNORE просто проигнорирует попытку добавить повторяющуюся строку, и mysqli_affected_rows вернет 0, чтобы указать, что ничего не было вставлено.

+0

благодарит за ответ. Я редактировал свой пост. я не знаком с PDO. не могли бы вы рассказать мне, какая часть неправильна в моем вышеприведенном коде? – user1788736

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