簡體   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