0

在做了一些研究之后,我认为我需要输出子句。本质上,当我收到要上传到服务器的文件的位置时,我正在使用以下 SQL 并插入到指定的表中。当我上传到表中时,ID 是一个自动增量字段和主键。

$conn = mysqli_connect($DBHOSTmy, $DBuser, $DBpass, $DBmy) or die("An error occurred connecting to the database " . mysqli_error($conn));

$query = "INSERT INTO ebwf (src,loc,iq,wq,pq) OUTPUT Inserted.id, Inserted.src, Inserted.loc, Inserted.iq, Inserted.wq, Inserted.pq VALUES ('" . $source . "','" . $finalPdf . "','y',0,0);";

echo $query;

$result = $conn->query($query); 

echo $result->num_rows;


$conn->close();

当它运行时,我得到 的回报INSERT INTO ebwf (src,loc,iq,wq,pq) OUTPUT Inserted.src, Inserted.loc, Inserted.iq, Inserted.wq, Inserted.pq VALUES ('m','scan/WF_153_140812113520.pdf','y',0,0);,但我没有得到数字行的回报。

我真的只需要插入行的这一分钟的 ID,但如果我们能获得所有这些字段,那就太棒了。

我几乎从几个不同的地方复制了 OUTPUT 子句的用法,但我看不出我做错了什么而没有回报......

我在写这篇文章时尝试做一些研究,因为我没有很好的响应率,因为人们认为我缺乏它,所以我还发现:如何使用 INSERT 语句的 OUTPUT 子句获取标识值?...我只将查询更改为:

$query = "DECLARE @OutputTbl TABLE (id INT, src VARCHAR, loc VARCHAR, iq INT, wq INT, pq INT);

INSERT INTO ebwf (src,loc,iq,wq,pq) OUTPUT Inserted.id, Inserted.src, Inserted.loc, Inserted.iq, Inserted.wq, Inserted.pq INTO @OutputTbl(id, src, loc, iq, wq, pq) VALUES ('" . $source . "','" . $finalPdf . "','y',0,0);";

遗憾的是,我仍然一无所获。希望这将为我下一步应该做什么提供足够的信息。

4

1 回答 1

2

@cmorrissey 提供了一个很好的解决方案......

$last_insert_id = $conn->insert_id;

这将返回最后插入的 id(我认为自动递增的主键是最正确的解释。)这比 OUTPUT 更好用。我不确定为什么 OUTPUT 使用不正确,因为我在很多地方都看到过它,而这只有一次来自用户。

于 2014-08-13T12:15:54.607 回答