Czy jeśli robię update dla 1 użytkownika warto/trzeba budować tak zapytanie aby update był w 1 zapytaniu a nie w kilku ?
napisałem prosty kod którego zadaniem jest zbudowanie zapytania UPDATE z LEFT JOINem dla kilku tabel
$id = 1; $ustawienia_baza_pole['win1'] = 1; $ustawienia_baza_pole['win2'] = 2; $ustawienia_baza_pole['win3'] = 3; $ustawienia_baza_pole_laczace = 'id_laczace'; $zapytanie = 'UPDATE '.$ustawienia_baza_tabela[0].' a '; $l = 1; foreach ($ustawienia_baza_tabela as $aa => $war) { $zapytanie .= 'LEFT JOIN `'.$war.'` '.$literki[$l].' ON a.`'.$ustawienia_baza_pole_laczace.'` = '.$literki[$l].'.`'.$ustawienia_baza_pole_laczace.'` '; ++$l; } $m = 0; foreach($ustawienia_baza_pole as $pole_nazwa => $pole_wartosc) { { array_push($tab, $literki[$m].'.'.$pole_nazwa . ' = \'' . mysql_real_escape_string($pole_wartosc) . '\''); ++$m; } }
prosił bym o naprowadzenie mnie jak wydajniej to zrobić
skrypt ma kilka problemów:
1) jeżeli nazwa klucza => $ustawienia_baza_pole['win1'] czyli pola są identyczne budowany jest tylko update na 1 pole.
2) na tą chwile skrypt "działa poprawnie" w przypadku gdy dla tabeli1 występuje 1 pole ..
prosił bym o naprowadzenie mnie jak to poprawić i czy to ma sens bo może jest jakaś inna metoda stworzenia tego strukturalnie z góry dziękuje
siedziałem trochę i napisałem coś takiego:
$id = 1; 'tabela' =>array('pole1' => 1,'pole2' => 2,'pole3' =>3,'pole4' =>4,'pole5'=>5), 'tabela2' =>array('pole6' => 1,'pole7' => 2,'pole3' =>3,'pole8' =>24,'pole9'=>53), 'tabela3' =>array('pole10' => 13,'pole11' => 22,'pole3' =>33,'pole135' =>43,'pole13'=>53), ); $query = 'UPDATE '; for($a=0;$a<=$suma_kluczy;++$a) { $query .= ' `'.$klucze_glowne[$a].'` '.$literki[$a].' LEFT JOIN `'.$klucze_glowne[$a+1].'` '.$literki[$a+1].' ON '.$literki[0].'.`id_char` = '.$literki[$a+1].'.`id_char`'; if($a != $suma_kluczy){$query .= ' LEFT JOIN';} } $query .= ' SET '; $b = 0; foreach ($tablica_baza as $klucz => $wartosc) { foreach($wartosc as $klucz2 => $wartosc2) { $query .= $literki[$b].'.`'.$klucz2.'` = '.$literki[$b].'.`'.$klucz2.'` + '.$wartosc2.', '; } //print_r($wartosc); ++$b; }
jednak dalej nie wiem czy powinno się tak robić...
oczywiście mam jeszcze 2 problemy
1) przed warunkiem WHERE wyświetla "," więc będzie error (jutro do tego przysiądę)
2) drugim problemem jest zła składnia w pętli for (do tego też jutro usiądę)
Prosił bym o poradę ...