2014-11-27 4 views
1

У меня возникли проблемы с получением информации из SELECT sql, а затем для INSERT такой информации в моей базе данных. Проблема в том, что я не могу решить вставить несколько строк.Вставить несколько строк с одним QUERY

Я получил это, это только вставить один пункт, если категория имеет больше пунктов, то один он также должен быть вставлен, что количество раз

я получаю элементы в один ряд в настоящее время рядом друг с другом, но я хотят те, у каждого другого

if($log1 = $log->fetch_object()) 
    { 
while($loco = $log->fetch_object()) 
    { 
$item .= "$loco->itemname"; 
    } 
$logss = "INSERT INTO log_drops(`item`, mobname, game, log_id, log_name)VALUES('$item', '$mobname', '$game', '$id', '$name')"; 
if($result1 = $db->query($logss)); 
} 
+0

'$ logss = "INSERT INTO log_drops (пункт, mobname, игры, log_id, log_name) ЗНАЧЕНИЯ";' до момента while .... и вместо этого в while: '$ logss. =" ('$ item', '$ mobname', '$ game', '$ id', '$ name'), ";' после этого добавьте '$ logss = rtrim ($ logss, ',')."; ";' и выполните его – HellBaby

+0

Также я не хочу ничего подрезать, потому что мне нужно ввести INSERT для примера 2 элемента под названием «ПУНКТ 1, ITEM 2 ', но имя моба, игра, log_id, log_name одинаковы. Мне нужно изменить строку 'item' – JustRandomGuy

ответ

0

Создать VALUES строку из результата вы получаете. Вам нужно немного изменить в соответствии с вашим требованием. Но ниже пример даст вам представление, как это сделать:

$items = ''; 
while($loco = $log->fetch_object()){ 
    $items .= '('.$loco->itemname.','; 
    $items .= // Some other variables those you want to insert... 
    $items .= $loco->xyz.'),'; 
} 
$new_data = rtrim($items, ','); 
$clause = "INSERT INTO log_drops(`item`, mobname, game, log_id, log_name) 
      VALUES $new_data"; 

После этого вам нужно выполнить только один запрос на вставку.

+0

, вы имеете в виду некоторые другие переменные, такие как' $ game, $ mobname' ectra? И нужно ли добавить каждую переменную каждую строку: '$ items. = '('. $ Game. ',';' – JustRandomGuy

+0

Вам не нужно открывать скобки для всех других переменных. В основном мы создаем string, что-то вроде этого: '(1,2,3), (4,5,6), (7,8,9)'. Выведите переменную '$ new_data' и проверьте формат перед тем, как поместить его в' $ clause' –

+0

этот код не привнесет то, что именно нужно идентификатору, переменная item закончит с 'comma' –

0

Попробуйте этот стиль, всегда я использовал, чтобы получить свое значение из массива и создать sql

<?php 
$values = ''; // store values to be inserted 
$n=','; // string to manage comma between chunk of values to be inserted 
$numberOfValues=5; // values defind to be inserted 
$count = 0; 
$recordNum =mysqli_num_rows($log) - 1; //count number of records from 0 
while($loco = $log->fetch_object()){ 
    if($count == $recordNum){ $n = ' '; } 
    $values .= "('$loco->itemname','$loco->game','$loco->game','$loco->log_id','$loco->log_name') $n "; 
    $count++; 
} 

$clause = "INSERT INTO log_drops(`item`, mobname, game, log_id, log_name) 
      VALUES $values"; 
?> 
+0

Его добавление всех элементов в одну строку, я имею в виду между собой если это возможно. Также у меня вопрос о '$ loco-> xyz', что означает xyz? Спасибо – JustRandomGuy

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