dongyukui8330 2015-08-10 16:49
浏览 30

使用存储过程插入

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 :/

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 Vue3 大型图片数据拖动排序
    • ¥15 划分vlan后不通了
    • ¥15 GDI处理通道视频时总是带有白色锯齿
    • ¥20 用雷电模拟器安装百达屋apk一直闪退
    • ¥15 算能科技20240506咨询(拒绝大模型回答)
    • ¥15 自适应 AR 模型 参数估计Matlab程序
    • ¥100 角动量包络面如何用MATLAB绘制
    • ¥15 merge函数占用内存过大
    • ¥15 使用EMD去噪处理RML2016数据集时候的原理
    • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大