Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Dwa zapytania w jednym
Forum PHP.pl > Forum > Przedszkole
Berkovits
Czy mozna w jednym zapytaniu MySQL'a dokonac dwoch operacji: DELETE i INSERT?
Jesli nie (znajac zycie, to pewnie nie mozna), to czy mozna z poziomu PHP wyslac jedno zapytanie skladajace sie z dwoch? Jak to sie robi?

Chodzi mi o cos takiego:
  1. <?php
  2. try
  3. {
  4.  $pdo->connect(...)
  5.  $ilosc = $pdo -> exec('DELETE ... [jakis znacznik rozdzielajacy] INSERT ... ');
  6.  ...
  7. }
  8. ?>
qqrq
Raczej nie można. Spróbuj w jednej komendzie dać 2 zapytanie, każde kończące się średnikiem - myślę, że to pomoże. Np. :

  1. <?php
  2. try
  3. {
  4.  $pdo->connect(...)
  5.  $ilosc = $pdo -> exec('DELETE ... ; INSERT ... ;');
  6.  ...
  7. }
  8. ?>


Ale głowy nie dam, od razu mówię. smile.gif
Berkovits
Rzeczywiscie zadzialalo. Korzystam z php 5.2.3, mysql chyba 5.0. Jednak nie wszystko jest OK (Moze cos zle robie).  Robilem testy z trzema zapytaniami

Po pierwsze, metoda
$pdo -> exec('

INSERT INTO... ;
DELETE FROM ...;
INSERT INTO ...
');
zwraca ilosc wierszy zmodyfikowanych chyba przez pierwsze zapytanie, mimo iż dalsze też operują na tablicy. Ale tego się można było spodziewać (choć raczej myślałem, że zwróci ilosc podczas ostaniej operacji). Gorsza sprawa jest taka, ze jezeli w trzeciej instrukcji (insert) wstawie dane, ktore przez baze danych musza byc odrzucone (duplicate entry), nie pojawia sie wyjatek (blad), natomiast gdy przestawie to "niedobre" polecenie na poczate, kto wszystko jest ok, czyli rzucany jest wyjatek.

Wobec powyzszego, nalezy wysylac takie sklejone zapytania z rozmyslem.

qqrq, dzieki za pomoc.



 
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.