我想一起运行这3个查询。如何从第二个查询中获取Case_ID以插入到第三个查询的Case_ID中?
$query = "insert into `Case`(`informant_userid`,`CaseName`,`CaseTime`) values ('" . $informant_userid . "','" . $CaseName . "',now())";
$query = "SELECT `Case_ID` from `Case` ORDER BY `Case_ID` DESC LIMIT 1 ";
$query = "insert into Picture (Case_Pic,Case_ID) values ('" .addslashes($imagefile). "','" .$Case_ID"')" ;
我假设CaseID
是一个自动递增列。使用LAST_INSERT_ID()
获取最近的INSERT
中分配的值。
$query = "insert into `Case`(`informant_userid`,`CaseName`,`CaseTime`) values ('" . $informant_userid . "','" . $CaseName . "',now())";
// execute $query
$query = "insert into Picture (Case_Pic,Case_ID) values ('" .addslashes($imagefile). "', LAST_INSERT_ID())" ;
// execute $query
您可以使用一个小技巧来使用INSERT INTO SELECT语句。这条语句将SELECT查询的结果插入目标表(图)。
"INSERT INTO Picture (Case_Pic,Case_ID)
SELECT '" . addslashes($imagefile) . "' AS Case_Pic, Case_ID FROM `Case`
ORDER BY Case_ID DESC LIMIT 1"
要在结果中包含Case_Pic,则使用列别名。
您可以创建一个存储过程来同时运行这些查询。
的例子:
BEGIN
insert into `Case`(`informant_userid`,`CaseName`,`CaseTime`) values ('" . $informant_userid . "','" . $CaseName . "',now());
SET out_param = LAST_INSERT_ID();
END
您可以使用out_param
值作为大小写编号,否则您也可以运行select查询并为变量分配值,如下所示。
SELECT @param1 = col1, @param2 = col2, ...
FROM TABLE1
WHERE <where_clause>
你可以在这里看到更多的细节