Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] dodanie tablicy do bazy danych
Forum PHP.pl > Forum > Przedszkole
srwsio
Witam
Mam tablicę $dane
  1. (
  2. [produkt_id] => Array
  3. (
  4. [0] => 1
  5. [1] => 2
  6. [2] => 3
  7. [3] => 4
  8. [4] => 5
  9. )
  10.  
  11. [sztuk] => Array
  12. (
  13. [0] => 1176
  14. [1] => 5366
  15. [2] => 2806
  16. [3] => 589
  17. [4] => 265
  18. )
  19.  
  20. )


oraz tabelę bazy danych

dane
  1. id
  2. userid
  3. 1
  4. 2
  5. 3
  6. 4


Chce dodać powyższą tablicę do tabeli dane gdzie $dane[produkt_id] to pole w tabeli a $dane [sztuk] to jej wartość.
Potrafię to zrobić za pomocą pętli. Lecę wtedy po każdym wierszu z tabeli i zapisuje. Tylko że wykonuję - biorąc w/w przykład - 5 zapytań a czasami tablica ma nawet do 36 "wspólnych" wierszy.
Jak mogę to zrobić poprzez jedno zapytanie?
lukesh
Nie możesz tego zrobić poprzez jedno zapytanie. Dla każdego wiersza w bazie musisz wywołać osobne zapytanie.
Możesz ewentualnie przechowywać w bazie całą tablicę, ale miałoby to tylko sens, jeśli za każdym razem pobierałbyś dane w całości.
mortus
Cytat(lukesh @ 15.04.2012, 17:16:29 ) *
Nie możesz tego zrobić poprzez jedno zapytanie. Dla każdego wiersza w bazie musisz wywołać osobne zapytanie.
Możesz ewentualnie przechowywać w bazie całą tablicę, ale miałoby to tylko sens, jeśli za każdym razem pobierałbyś dane w całości.

Nieprawda. Można użyć zapytania typu MULTI-INSERT, które wygląda mniej więcej tak:
  1. INSERT INTO `tabela` (`kolumna_1`) VALUES
  2. ('wartość_1'),
  3. ('wartość_2'),
  4. ('wartość_3')
  5. -- itd.

W pętli foreach trzeba sobie takie zapytanie skleić jako łańcuch znaków.

EDIT:
Niestety ciężko mi odczytać, co odpowiada czemu w relacji tablica PHP - tabela bazy danych.
srwsio
Dziękuję Wam za pomoc ale przed chwilą sam znalazłem sposób.
Oto on

  1. $dane1= implode("`,`", $dane[0]);
  2. $dane2= implode("','", $dane[1]);
  3.  
  4.  
  5. $connection = mysql_connect('localhost', '*****', '******') or die('Brak połączenia z serwerem MySQL.<br />Błąd: '.mysql_error());
  6. $db = mysql_select_db('******', $connection) or die('Nie mogę połączyć się z bazą danych<br />Błąd: '.mysql_error());
  7.  
  8.  
  9. //Dodawanie rekordów do bazy mysql
  10.  
  11. $dodaj ="INSERT INTO `magazyn` (`id`, `fuserid`,`$dane1`) VALUES ('','$userid','$dane2')";
  12.  
  13. mysql_query($dodaj) or die(mysql_error());
  14. mysql_close($connection);


pozdrawiam
mortus
Miło by było, gdyby opis problemu sugerował odpowiednie rozwiązanie, bo w tej chwili opis traktuje o czymś innym, a rozwiązanie problemu ma z tym opisem niewiele (może "ciut") wspólnego.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.