繁体   English   中英

OUTPUT子句在PHP中返回

[英]OUTPUT clause get a return in PHP

经过研究后,我认为我需要Output子句。 本质上,当我收到要上传到服务器的文件的位置时,我将使用下面的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);";

可悲的是我仍然一无所获。。希望这会提供足够的信息,说明我下一步应该做什么。

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

$last_insert_id = $conn->insert_id;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM