Czy to jest legalne?Wiele instrukcji mysql INSERT w jednym zapytaniu php
$string1= "INSERT INTO....;";
$string1 .= "INSERT INTO....;";
$string1 .= "INSERT INTO....;";
mysql_query($string1) or die(mysql_error());
Czy to jest legalne?Wiele instrukcji mysql INSERT w jednym zapytaniu php
$string1= "INSERT INTO....;";
$string1 .= "INSERT INTO....;";
$string1 .= "INSERT INTO....;";
mysql_query($string1) or die(mysql_error());
Na co warto, i zależności od tego czy jesteś wstawianie tych samych danych do te same tabele, np it's much better to insert multiple values with the one insert
INSERT INTO a VALUES (1,23),(2,34),(4,33);
INSERT INTO a VALUES (8,26),(6,29);
Specjalne podziękowania za odniesienie do strony "Wstaw prędkość". – SarathChandra
Nie. Są to oddzielne zapytania i należy je nazywać.
Nie, mysql_query()
zezwala tylko na jedno zapytanie naraz.
można wstawić wiele wierszy tak:
INSERT INTO table (col1, col2)
VALUES (1, 2), (3, 4), (5, 6)
Ten jest lepszy - ważne jest podanie nazw pól, w których wysyłasz dane do ! – itsricky
W ogóle, to ważny SQL ponieważ każda instrukcja kończy się średnikiem, ale PHP nie pozwala na wysyłanie więcej niż jedno zapytanie w czasie, w celu ochrony przed atakami typu SQL Injection, które mogą eksploatować źle napisany skrypt.
Można nadal używać składni jak:
INSERT INTO foo VALUES ('a1', 'b1'), ('a2', 'b2');
z MySQL dev wsparcia MySQL dev forum
INSERT INTO table (artist, album, track, length)
VALUES
("$artist", "$album", "$track1", "$length1"),
("$artist", "$album", "$track2", "$length2"),
("$artist", "$album", "$track3", "$length3"),
("$artist", "$album", "$track4", "$length4"),
("$artist", "$album", "$track5", "$length5");
Więc włóż idzie normalnie jak zawsze:
Szczęśliwe wstawianie wielu wartości za pomocą instrukcji ONE insert. :)
Kopiuj wklej przykład/w funkcji i pętli (załóżmy $ ids jest tablicą)
public function duplicateItem($ids)
{
if (isset($ids[0])){ //at least one item
$sqlQuery = "INSERT INTO items (item_id, content) VALUES ";
for($i=0; $i<count($ids); $i++) {
if ($i == count($ids)-1){
$sqlQuery .= "(".$ids[$i][0].", '".$ids[$i][1]."');";
}else{
$sqlQuery .= "(".$ids[$i][0].", '".$ids[$i][1]."'),";
}
}
mysql_query($sqlQuery) or die('Error, insert query failed: '.mysql_error());
}
}
Lepiej unikać konkatenacji. Użyj 'implode()'. zobacz ten [odpowiedź] (http://stackoverflow.com/a/780046/4040525) w celu uzyskania szczegółowych informacji. –
Dlaczego korzystanie z implodu() jest w tym przypadku korzystne? W powyższym pytaniu mamy normalne instrukcje SQL. W odpowiedzi wskazujesz, że mówią o dużej ilości tekstu (na przykład o 1000 wstawkach dużych tekstów) i, tak, w takim przypadku dobrze jest uniknąć konkatenacji. –
Wiem.Jest w porządku używać tutaj konkatenacji. Wczoraj zauważyłem obie odpowiedzi i pomyślałem, że lepiej jest użyć 'implode()' jako reguły. –
INSERT INTO table (a,b) VALUES (1,2), (2,3), (3,4);
mi rozwiązać mój problem uruchamianie wielu zapytanie o moim projekcie PHP przy użyciu tej metody mysqli [mysqli .multi-query.] (http://us2.php.net/manual/en/mysqli.multi-query.php) –