php将查询结果插入到另一条查询语句中


PHP-Insert Query Result into another Query Statement

我想一起运行这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>

你可以在这里看到更多的细节