2016-02-24 5 views
0

i allready нашел ответы на другие темы, но не был рабочим ответом на мою ситуацию. У меня возникли проблемы с вставкой элементов массива в мою БД. (SQL Server). При использовании цикла foreach в PHP цикл только вставляет последний элемент массива в db, но когда i printr($arrayname), он показывает правильные оба элемента.Foreach PHP только вставляет последний элемент в db

Вот некоторые из кода.

Сначала я сделать выбор, чтобы назначить некоторые переменные: (подзапрос для удаления «» в избранных)

$sql="SELECT ... FROM ..."; 
$query = sqlsrv_query($conn, $sql, array(), array("Scrollable" => SQLSRV_CURSOR_KEYSET)); 

foreach($_SESSION['cart'] as $id => $value) { 

$sql.=$id.","; 
}   
$sql=substr($sql, 0, -1).")"; 

    if ($query){ 

     while($row = sqlsrv_fetch_array($query, SQLSRV_FETCH_ASSOC)) { 

     $variable=$row['rowname']; 

     } 
    } 

До сих пор так хорошо, сделал эхо на $variable в если он печатает обе записи строк, и это произошло.

Чем я сделать INSERT:

foreach($_SESSION['cart'] as $id => $value) { 

print_r($id); 

$sql="INSERT INTO() ... VALUES ('$value')"; 
    $query= sqlsrv_query($conn, $sql, array(), array("Scrollable" => SQLSRV_CURSOR_KEYSET)); 
} 

Вот где идет не так, снова я сделал print($id), чтобы проверить и увидеть значения. Он печатает оба значения, но только вставляет последний элемент ($variablename) из массива $id.

Пожалуйста, что я делаю неправильно?

Cheers.

+0

добавить 'error_reporting (E_ALL); ini_set ('display_errors', 1);? 'В сценарии после'

+1

INSERT должен находиться внутри цикла while, а не снаружи, otherwhise на переменной $ будет присвоено последнее значение из цикла. – mitkosoft

+0

У вас есть опечатки? Вы используете '$ sql2', но запрос называется' $ sql', вы используете '$ variablename', который должен быть' $ value'? –

ответ

0
foreach($_SESSION['cart'] as $id => $value) { 

$sql.=$id.","; 
    }   
$sql=substr($sql, 0, -1).")"; 
$query = sqlsrv_query($conn, $sql, array(), array("Scrollable" => SQLSRV_CURSOR_KEYSET)); 

    if ($query){ 

    while($row = sqlsrv_fetch_array($query, SQLSRV_FETCH_ASSOC)) { 

    $variable=$row['rowname']; 

    $sql2="INSERT INTO()"; 
    $stmt= sqlsrv_query($conn, $sql2, array(), array("Scrollable" => SQLSRV_CURSOR_KEYSET)); 


} 
}