Wątek przeniesiony 2016-08-16 22:02 z PHP przez dzek69.

Usuwanie z wielu tabel jednocześnie

0

Witam. Chcę usunąć ten sam rekord z dwóch tabel jednocześnie.

$a = trim($_GET['a']); 
$nr_klienta = trim($_GET['nr_klienta']); 

if($a == 'del' and !empty($nr_klienta)) 
{ 
     
    /* usuwamy rekord */ 
    mysql_query("DELETE * FROM Koszyk, kategoria WHERE Koszyk.nr_klienta=".$_GET['nr_klienta']." and kategoria.nr_klienta=".$_GET['nr_klienta'].",") 
    or die('Błąd zapytania: '.mysql_error()); 
     
    echo 'Rekord został usunęty z bazy'; 
}  

Po odświeżeniu strony wyskakuje błąd:
Błąd zapytania: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '* FROM Koszyk, kategoria WHERE Koszyk.nr_klienta=15 and kategoria.nr_klienta=15,' at line 1

Błąd leży po stronie serwera czy kodu? Dodam że identyczny błąd wyskakuje jak kod napiszemy w nieco inny sposób. Mianowicie:

$a = trim($_GET['a']); 
$nr_klienta = trim($_GET['nr_klienta']); 

if($a == 'del' and !empty($nr_klienta)) 
{ 
     
    /* usuwamy rekord */ 
    mysql_query("DELETE * FROM Koszyk, kategoria WHERE Koszyk.nr_klienta='$nr_klienta' and kategoria.nr_klienta='$nr_klienta'") 
    or die('Błąd zapytania: '.mysql_error()); 
     
    echo 'Rekord został usunęty z bazy'; 
}  
2
create table a(id int);
create table b(id int);

delete a, b from a join b on a.id = b.id where a.id = 42;

Polecam lekturę na temat "sql injection"

0

Dziękuje za wytłumaczenie. Wszystko działa. Jutro poczytam o SQL injection.

1 użytkowników online, w tym zalogowanych: 0, gości: 1