Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL] dodanie tablicy do bazy danych
srwsio
post
Post #1





Grupa: Zarejestrowani
Postów: 82
Pomógł: 1
Dołączył: 20.01.2005
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
lukesh
post
Post #2





Grupa: Zarejestrowani
Postów: 113
Pomógł: 14
Dołączył: 25.08.2006

Ostrzeżenie: (0%)
-----


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.


--------------------
Edumemo.pl - Nauka Języków Obcych
Go to the top of the page
+Quote Post
mortus
post
Post #3





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


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.

Ten post edytował mortus 15.04.2012, 16:32:50
Go to the top of the page
+Quote Post
srwsio
post
Post #4





Grupa: Zarejestrowani
Postów: 82
Pomógł: 1
Dołączył: 20.01.2005
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
mortus
post
Post #5





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 14:30