pobranie id z innej tabeli

0

Witam,
mam tabele adres, w której przechowuje id_adres, rekord jest generowany automatycznie.
Posiadam także tabele klient z kluczem obcym adres_id. Potrzebuje triggera, który przypisze ostatni id_adres z tabeli adres do adres_id z tabeli klient.
Zrobiłam coś takiego i niestety nie wiem co jest źle :/

CREATE TRIGGER adres_idd
BEFORE INSERT ON klient, adres
FOR EACH ROW 
BEGIN 
declare id_adres_id integer;
if new.adres_id is null then
select max(ID_ADRES) into id_adres_id from adres;
set new.adres_id = id_adres_id;
end if;
END;

Baza w phpmyadmin

0

Pewnie to jest źle:
BEFORE INSERT ON klient, adres
Ale w dokumentacji jest wszystko napisane:
http://dev.mysql.com/doc/refman/5.7/en/create-trigger.html

0
CREATE TRIGGER adres_idd 
BEFORE INSERT ON klient 
FOR EACH ROW 
BEGIN 
declare id_adres_id integer; 
if new.adres_id is null then 
select max(ID_ADRES) into id_adres_id from adres; 
set new.adres_id = id_adres_id; 
end if; 
END;

poddałam się już z tym triggerem i próbuje zrobić to w php, ale tez mi nie wychodzi :/

 
$addressQuery = 'INSERT INTO adres (miasto, miejscowosc, id_wojewodztwo ,powiat, kod_pocztowy, ulica, nr_domu, NR_LOKALU) VALUES ("%1$s", "%2$s", "%3$d", "%4$s", %5$d, "%6$s", "%7$d", "%8$d")';
	$adress_id = $connection->query(sprintf("SELECT max(id_adres) FROM adres"));
	$dataQuery    = 'INSERT INTO dane (nr_telefonu, fax, e_mail) VALUES ("%1$s","%2$s", "%3$s")';
	$dane_id = $connection->query(sprintf("SELECT max(id_dane) FROM dane"));
	$clientQuery  = 'INSERT INTO klient (imie, nazwisko, nazwa_firmy, regon, nip, id_adres, id_dane) VALUES ("%1$s", "%2$s", "%3$s", "%4$d", "%5$d", %6$s, %7$d)';
    $klient_id = $connection->query(sprintf("SELECT max(id_klient) FROM klient"));
	$userQuery    = 'INSERT INTO uzytkownik (login, haslo, id_rola, klient_id) VALUES ("%1$s","$2$s",1, %3$s)';
    
	$insertAdres  = $connection->query(sprintf($addressQuery, $userInput['miasto'], $userInput['miejscowosc'], $userInput['id_wojewodztwo'], $userInput['powiat'], $userInput['kod_pocztowy'], $userInput['ulica'], $userInput['nr_domu'], $userInput['nr_lokalu']));
    $insertDane   = $connection->query(sprintf($dataQuery, $userInput['nr_tel'], $userInput['fax'], $userInput['email']));
	$insertClient = $connection->query(sprintf($clientQuery, $userInput['imie'], $userInput['nazwisko'], $userInput['nazwa_firmy'], $userInput['regon'], $userInput['nip'], $adress_id, $dane_id));
	$insertUser   = $connection->query(sprintf($userQuery, $userInput['login'], $haslo_hash, $adress_id));

atchable fatal error: Object of class mysqli_result could not be converted to string in (sciezka) on line 109, czyli ta:

 
$insertClient = $connection->query(sprintf($clientQuery, $userInput['imie'], $userInput['nazwisko'], $userInput['nazwa_firmy'], $userInput['regon'], $userInput['nip'], $adress_id, $dane_id));
1

Co do triggera... Wstaw PRZED pierwszą linią DELIMITER $$ i wykonaj całość... Sam trigger jest OK.
Co do PHP zaś. Dwa ostatnie parametry to $address_id i $dane_id, a te są zdefiniowane jako wynik $connection->query, czyli jakiś mysqli_result. Musisz pobrać wartości z tego resultu i je podstawić do zapytania...

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