[英]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.