Предложение OUTPUT получить возврат в PHP

После некоторого исследования я думаю, что мне нужно предложение Output. По сути, я беру приведенный ниже SQL и вставляю в указанную таблицу, когда получаю местоположение файла, который я загружаю на сервер. Когда я загружаю в таблицу идентификатор, это поле с автоматическим приращением и первичный ключ.

$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);, но я не получаю возврата числовых строк.

Мне действительно нужен идентификатор прямо в эту минуту вставленной строки, но если мы сможем получить все эти поля, это было бы здорово.

Я в значительной степени скопировал использование предложения OUTPUT из нескольких разных мест, но я не вижу, что я делаю неправильно, чтобы не получить возврат...

Я пытаюсь провести некоторое исследование, когда пишу это, потому что у меня не было хороших ответов, потому что люди думают, что мне этого не хватает, поэтому я также обнаружил: Как мне использовать предложение OUTPUT оператора INSERT, чтобы получить значение идентификатора?... Я изменил свой запрос только на:

$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);";

Я, к сожалению, до сих пор ничего не получаю.. Надеюсь, это даст достаточно информации о том, что мне делать дальше.

1 ответ

Решение

@cmorrissey предоставил отличное решение...

$last_insert_id = $conn->insert_id;

Это возвращает последний вставленный идентификатор (я думаю, что первичный ключ, который автоматически увеличивается, является наиболее правильным объяснением.) Это лучше использовать, чем OUTPUT. Я не уверен, почему OUTPUT некорректно использовать, поскольку я видел его так много мест, и это только один раз от пользователя.

Другие вопросы по тегам