2015-06-04 3 views
0
$loopCounter = 0; 
      while ($loopCounter < $amount) { 
       $sql = "INSERT INTO bookings VALUES (NULL, '$firstname', '$lastname', '$email', $enrolAmount, '$location', $price)"; 
       $loopCounter += 1; 
       mysqli_query($dbc, $sql); 
      } 

Итак, у меня есть цикл, чтобы попытаться вставить элементы в таблицу SQL, но когда я пытаюсь это сделать, он вставляет только один элемент в таблицу. Пожалуйста помоги!Вставить элементы в таблицу SQL с помощью цикла в PHP

+0

Где сумма вложенных платежей? – Kyle

+0

Можете ли вы показать нам декларацию суммы $ plz. – Falt4rm

+0

$ amount = mysqli_real_escape_string ($ dbc, $ _POST ['amount']); Его из формы –

ответ

0

У вас есть TinyInt первичный ключ, который достиг своего предела, как обозначено

AUTO_INCREMENT=127 в ваш комментарий. Согласно документации here максимальное значение для TINYINT 127.

Вы должны запустить

alter table bookings change column bookings_id bookings_id unsigned int(10) not null auto_increment primary key;

, и тогда вы, скорее всего, будет в порядке.

+0

Это сработало! Большое спасибо! :) –

+0

Рад это услышать. Принятие ответа и голосования было бы приятным ... :-) –

0

Вот отличный пример, который я нашел. Link here

<?php 

// an array items to insert 
$array = array('dingo'  => 'A native dog', 
     'wombat'  => 'A native marsupial', 
     'platypus' => 'A native monotreme', 
     'koala'  => 'A native Phascolarctidae' 
     ); 

// begin the sql statement 
$sql = "INSERT INTO test_table (name, description) VALUES "; 

// this is where the magic happens 
$it = new ArrayIterator($array); 

// a new caching iterator gives us access to hasNext() 
$cit = new CachingIterator($it); 

// loop over the array 
foreach ($cit as $value) 
{ 
    // add to the query 
    $sql .= "('".$cit->key()."','" .$cit->current()."')"; 
    // if there is another array member, add a comma 
    if($cit->hasNext()) 
    { 
     $sql .= ","; 
    } 
} 


// now we can use a single database connection and query 
$conn = mysql_connect('db_user', 'db_password'); 
mysql_select_db('test_db', $conn); 
mysql_query($sql, $conn); 

?> 
0

Во-первых, вы должны использовать для вместо в то время как

for($loopCounter = 0; $loopCounter < $amount; $loopCounter++) 

Тогда, я думаю, что причина, почему вы вставить только один элемент, потому что переменная $ amout, вероятно, установлен в 1. Вы должны попытаться написать

$amout = 2; 

как раз перед циклом, чтобы увидеть, если это проблема.

+0

Если я поставлю эхо «один»; как раз перед $ sql и он приходит с «oneoneone» –

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