2012-10-31 14 views
17

Son eklenen kimlik nasıl alınır?En son eklenen kimlik formu saklı yordamını MySQL'e getir

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_insertzonemsg` 

    (IN User_Id INT(10), 
    IN zid INT(10), 
    IN update_titles VARCHAR(50), 
    IN textarea1s TEXT, 
    IN filupload1s TEXT, 
    IN audio1s VARCHAR(100), 
    OUT out_id INT(10)) 
     BEGIN 
     INSERT INTO zone_message_master 
     **(user_id,ZoneID,update_title,textarea1,filupload1, 
     audio1,LastUpdate)** 
     VALUE 
     **(User_Id,zid,update_titles,textarea1s, 
     filupload1s,audio1s,NOW());** 

SELECT **id** as **out_id** 
FROM **zone_message_master** LAST_INSERT_ID(); 
END$$ 

I out_id formu Tablo zone_message_master olarak son eklenen kimlik dönmek gerekir?

cevap

27

SET deyimini kullanmanız gerekir. Örneğin -

Tablo:

CREATE TABLE table1(
    id INT(11) PRIMARY KEY AUTO_INCREMENT, 
    column1 VARCHAR(10), 
    column2 VARCHAR(10) 
); 

Yordam vücut:

BEGIN 
    INSERT INTO table1(column1, column2) VALUES ('value1', 'value2'); 
    SET out_param = LAST_INSERT_ID(); 
END 

Not, yani kimliği alanı INSERT deyiminde belirtilmedi. Bu değer otomatik olarak eklenecektir; ve elbette, bu kimlik alanı AUTO_INCREMENT seçeneğine sahip olmalıdır.

6

Aşağıdaki kod yardımıyla Son takın Kimliğini Al edebilirsiniz: -

******* Hemen Oluştur Saklı Prosedür: *******

CREATE DEFINER=`root`@`localhost` PROCEDURE `add_enquiry`(
IN EnquiryNo varchar(40), 
IN OpeningDate date, 
IN ClosingDate date, 
IN CreatedOn date, 
OUT LID int(11) 
) 

BEGIN 

INSERT into `enquiries` SET `enquiry_no`=EnquiryNo ,`opening_date`=OpeningDate ,`closing_date`=ClosingDate,`created_on` =CreatedOn; 

SET LID = LAST_INSERT_ID(); 
END  

* ****** PHP AÇIK ÇAĞRI: *********

$rs = $dbh->query('CALL add_enquiry("ENQ" ,"2016-08-19","2016-08-18", "2016-11-23",@LID)'); 

$rs2 = $dbh->query("SELECT @LID as id"); 
$row = $rs2->fetchObject(); 
echo $row->id; 

Selamlar Adnan

İlgili konular