Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]PDO - Dodanie wielu wierszy w jednym zapytaniu
@rtur
post
Post #1





Grupa: Zarejestrowani
Postów: 254
Pomógł: 3
Dołączył: 23.02.2006

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


Mam taką tablice:
  1. $tablica = array(
  2. 0=> array (
  3. 'artist'=> 'Opus',
  4. 'songtitle'=> 'Life Is Life',
  5. ),
  6. 1=> array (
  7. 'artist'=> 'Smookie',
  8. 'title'=> 'Needles And Pins',
  9. ),
  10. 2=> array (
  11. 'artist'=>'George Harrison',
  12. 'title'=>'Got My Mind Set On You',
  13. ),
  14. 3=> array (
  15. 'artist'=> 'Smookie',
  16. 'title'=> 'I`ll Mett You At Midnight',
  17. ),
  18. )

Chciałbym dodać dane z tej tablicy do tabeli w bazie danych jednym zapytaniem insert za pomocą PDO
W przypadku jednego rekordu zrobiłbym tak:
  1. $stmt = $pdo -> prepare('INSERT INTO `songs` (`artist`, `title`) VALUES(:artysta,:tytul)');
  2. $stmt -> bindValue(':artysta', $artysta, PDO::PARAM_STR);
  3. $stmt -> bindValue(':tytul', $tytul, PDO::PARAM_STR);
  4. $exec = $stmt -> execute();

Jak wygląda składnia zapytania insert dla wielu rekordów z bindowaniem danych z tablicy w PDO?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
@rtur
post
Post #2





Grupa: Zarejestrowani
Postów: 254
Pomógł: 3
Dołączył: 23.02.2006

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


Nie wiem czy jest sens to będzie co 20 minut 20 rekordów próbowało wrzucić... to chyba nie dużo...

Korzystam z tej klasy https://github.com/indieteq/PHP-MySQL-PDO-Database-Class i o ile udało mi się zrobić pętlę Values (:artysta1,:tytul1),....(:artysta20,:tytul20) do zapytania insert dla wielu to nie mogę sobie podpięciem parametrów...
  1. $i=0;
  2. $numItems=20;
  3. foreach($data as $d){
  4. if($i === $numItems) {
  5. $val .= '(:artysta'.$i.',:tytul'.$i.')';
  6. }
  7. else{
  8. $val .= '(:artysta'.$i.',:tytul'.$i.'), ';
  9. }
  10. }
  11. $sqlQuery = 'INSERT INTO song (artist,title) VALUES '.$val;
  12. // Przy pojedynczym rekordzie dane dodałbym tak;
  13. $db->query($sqlQuery,array('artysta1'=>$dane[0][1],'tytul1'=>$dane[0][2]));

W jaki sposób do zmiennej $tablicaDlaWieluParametrow przypisać coś takiego:
  1. $tablicaDlaWieluParametrow = array('artysta1'=>$dane[0][1],'tytul1'=>$dane[0][2],....'artysta20'=>$dane[19][1],'tytul20'=>$dane[19][2]);

aby zadziałało tak:
  1. $db->query($sqlQuery,$tablicaDlaWieluParametrow);

domyślam się że pętlą ale nie chce mi wyjść coś co zadziała jako drugi parametr w funkcji $db->query();

Ten post edytował @rtur 25.04.2015, 16:50:44
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 30.12.2025 - 06:17