Here is my problem. I have this script wich have to insert data in 2 different tables in database.
<html>
<body bgcolor=#005b96>
<?php
include "database.php";
$ime=$_POST["p_ime"];
$prezime=$_POST["p_prezime"];
$broj_telefona=$_POST["p_broj_telefona"];
$datum_rodjenja=$_POST["p_datum_rodjenja"];
$broj_vozacke=$_POST["p_broj_vozacke"];
$grad="";
$connection1=mysql_connect("localhost","Admin","rentacar") or die(mysql_error());
mysql_select_db("rentacar",$connection1) or die(mysql_error());
$selectQuery="SELECT idgrad, ime_grada from grad";
$result=mysql_query($selectQuery,$connection1) or die(mysql_error());
while($row=mysql_fetch_array($result))
{
if($_POST["p_grad"]==$row["ime_grada"]){
$grad=$row["idgrad"];
}
}
if ($grad=="")
header("Location:formaGrad.html");
if ($ime!="" || $grad!=""){
$connection2=mysql_connect("localhost","Admin","rentacar") or die(mysql_error());
mysql_select_db("rentacar",$connection2) or die(mysql_error());
"INSERT INTO korisnik VALUES
(NULL,"."\"".$ime."\","."\"".$prezime."\",".$broj_telefona.",\"".$datum_rodjenja."\",".$broj_vozacke.",".$grad.")";
mysql_query($insertQuery,$connection2) or die (mysql_error());
}
else{
echo "<br><br><h1 align=\"center\">Nisu unešeni zahtjevani podaci</h1>";
}
$connection3=mysql_connect("localhost","Admin","rentacar") or die(mysql_error());
mysql_select_db("rentacar",$connection3) or die(mysql_error());
$idkorisnik=mysql_insert_id($connection3);
$idvozilo=$_POST["p_id_vozilo"];
$datum_iznajmljivanja=$_POST["p_datum_preuzimanja"];
$datum_vracanja=$_POST["p_datum_preuzimanja"];
$insertQuery2="INSERT INTO iznajmljivanje VALUES
(NULL,".$idkorisnik.",".$idvozilo.",\"".$datum_iznajmljivanja."\",\"".$datum_vracanja."\")";
mysql_query($insertQuery2,$connection3) or die (mysql_error());
?>
</body>
</html>
In this code everything works fine. But i want to insert data in 1st table using stored procedure in MySQL. So when i put:
$insertQuery="call dodajKorisnikaProvjera("."\"".$ime."\","."\"".$prezime."\",".$broj_telefona.",\"".$datum_rodjenja."\",".$broj_vozacke.",".$grad.")";
instead:
$insertQuery="INSERT INTO korisnik VALUES
(NULL,"."\"".$ime."\","."\"".$prezime."\",".$broj_telefona.",\"".$datum_rodjenja."\",".$broj_vozacke.",".$grad.")";
I got this msg: "Cannot add or update a child row: a foreign key constraint fails (rentacar
.iznajmljivanje
, CONSTRAINT iznajmljivanje-korisnik
FOREIGN KEY (korisnik_id
) REFERENCES korisnik
(idkorisnik
) ON DELETE NO ACTION ON UPDATE NO ACTION)"
So 1st insert work again, i got user data in 1st table. But 2nd insert doesn't work?
Whats wrong? Please help if u can.
Here is code of stored procedure:
CREATE DEFINER=`root`@`localhost` PROCEDURE `dodajKorisnikaProvjera`(
IN p_ime varchar(15),
IN p_prezime varchar(15),
IN p_broj_telefona int,
IN p_datum_rodjenja date,
IN p_broj_vozacke int,
IN p_grad_id int
)
BEGIN
if TIMESTAMPDIFF(year,p_datum_rodjenja,CURDATE()) >=18 then
INSERT into korisnik(
ime,
prezime,
broj_telefona,
datum_rodjenja,
broj_vozacke,
grad_id)
VALUES(
p_ime,
p_prezime,
p_broj_telefona,
p_datum_rodjenja,
p_broj_vozacke,
p_grad_id
);
else
select'Korisnik mora imati vise od 18 godina.';
end if;
END
Table "korisnik" has primary key "idkorisnik". And table "iznajmljivanje" had foreign key "korisnik_id" which references to "idkorisnik". I discovered that mysql_insert_id($connection2) does not give number. I don't know why, because i can see "idkorisnik" in table. :/ When i put: $idkorisnik=mysql_insert_id($connection2); right after mysql_query(), mysql_insert_id() give back 0 :/