2012-05-08 3 views
0

Я создал случайную группу монстров из таблицы и ограничен 6. Теперь я также хочу вставить команду в user_team, которая содержит поля m1, m2, m3, m4, m5 , m6PHP - Вставить SQL во время цикла

Те, кто представляет Monster 1 to Monster 6. Теперь, когда я пытаюсь вставить сгенерированных монстров в команду, в нее вставляется только последний монстр, в то время как я все монстры монтируются. http://prntscr.com/8zrj2

$sql = "SELECT * from monsterdata ORDER BY RAND() LIMIT 6"; 
$result = mysql_query($sql); 
// this checks if you have a result 
if ($result == null) echo "No result"; 
else { 
    while (($row = mysql_fetch_array($result)) != false) { 
$row = mysql_fetch_array($result); 
{ 
// html code here 
} 
} 

заявление Вкладыш $monster = $row['id']; $sql = "INSERT into user_team(m1,m2,m3,m4,m5,m6) VALUES('$monster','$monster','$monster','$monster','$monster','$monster')"; $result = mysql_query($sql);

Просто не знаю, где/как разместить его так, он вставляет правильные значения в правой колонке.

ответ

0

Если бы это было, я бы раздвинуть идентификаторы в массив, а затем использовать это как так:

$monsterIds = array(); 
while(($row = mysql_fetch_array($result)) !== false) { 
    $monsterIds[] = $row['id']; 
} 
mysql_query("INSERT INTO user_team (m1, m2, m3, m4, m5, m6) VALUES ('{$monsterIds[0]}', '{$monsterIds[2]}', '{$monsterIds[3]}', '{$monsterIds[4]}', '{$monsterIds[5]}')") or die(mysql_error()); 

Кроме того, не забудьте использовать тройные равные при сравнении результатов строки, так что вы дон 't попадает в странную ошибку, где вещи оцениваются как ложные, которые на самом деле не являются ложными (=== - это способ пойти со многими функциями, которые могут возвращать либо массив, целое число, либо логическое значение в зависимости от результата).

Значения будут помещены в столбцы в том порядке, в котором они поставляются.

+0

Я попробовал, что то, что случилось это. http://prntscr.com/8zst9 Это должно было быть одно, и оно не вставляет все 6! :(Спасибо за помощь! –

+0

забыл упомянуть, что дает неопределенное смещение: от 1 до 5 @LosFrijoles –

+0

Это предназначено, чтобы полностью заменить цикл while. Похоже, что из вашей пасты вы используете это частично внутри цикла while (следовательно, диагональный шаблон получения идентификаторов). Неопределенное смещение происходит, потому что оно еще не дошло до конца. Цикл должен завершиться, прежде чем вы сможете что-либо сделать с данными. –

0

Вот мой пример использования PDO (библиотека PHP):

$DBH = new PDO("mysql:host=$db_host;dbname=$db_name", $username, $password); 
$webContractList=$DBH->query('SELECT id,nume,data FROM user2')->fetchAll(); 

$STH=$DBH->prepare("INSERT INTO user (id,nume,data) VALUES (:id ,:nume , :data)"); 

foreach ($webContractList as $item){   
    $STH->execute(array(':id'=>$item['id'], 
       ':nume'=>$item['nume'], 
       ':data'=>date('Y-m-d',strtotime($item['data'])))); 
} 
Смежные вопросы