Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [podstawy] dodawanie kilku alementów w jednym zapytaniu
flashdev
post
Post #1





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


Witam!

Napisałem poniższy kod, który tworzy fragment zapytania sql dodającego kilka wpisów do tabeli w jednym zapytaniu.

  1. $str = '';
  2. $count = count($arr);
  3. for( $i = 0; $i < $count; $i++ ){
  4. $str .= "(NULL, '". $arr[$i] ."', 0), ";
  5. }


I teraz pojawił się problem. W tabeli drugie pole ma status UNIQUE. Kiedy jedna z wartości w tablicy $arr juz znajduje się w tabeli, to zapytanie wogóle się nie wykona i nie doda się żaden inny element, pomimo iż nie ma takiego w bazie.
Czy muszę to rozbijać na pojedyńcze zapytania? Da się jakoś inaczej?

Ten post edytował flashdev 17.01.2010, 01:07:13
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
flashdev
post
Post #2





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


Nie do końca rozumiem o co chodzi.

Tymczasowo napisałem taki kod:
  1. $arr = (array)$arr;
  2. $res = array();
  3. $count = count($arr);
  4. for( $i = 0; $i < $count; $i++ ){
  5. $sql = "INSERT INTO `tags` (`id`, `tag_pl`, `tag`) VALUES (NULL, '". $arr[$i] ."', '". $this -> replacePlChars($arr[$i]) ."');";
  6. $res[$i] = $this -> sql -> query($sql) ? $this -> sql -> lastId() : 0;
  7. }
  8. return $res;

wejście: tablica zawierająca tagi do dodania
wyjscie: tablica zawierająca id dodanego tagu, lub 0 jeśli nie został dodany

No i to działa tak jak trzeba, tylko wydaje mi się, że da się to zrobić wykonujac tylko jedno zapytanie. Chyba o to chodzi w mysql, żeby wywoływać optymalne zapytania?
Jeśli da się to poprawić to czekam na sugestie.

Ten post edytował flashdev 17.01.2010, 13:19:42
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: 12.10.2025 - 00:37