Cosa dice il titolo della domanda. Con una query come SELECT @@IDENTITY AS ins_id
, devo fornire il nome della tabella o altre informazioni per specificare quale tabella/database di cui sto parlando?Come ottenere l'ID di inserimento in MSSQL in PHP?
risposta
@@IDENTITY
restituisce l'identità più recente generata nella sessione corrente. Nella maggior parte dei casi probabilmente vorrai utilizzare SCOPE_IDENTITY
, che restituisce l'identità più recente generata nell'ambito corrente.
Ad esempio, se si inserisce una riga in table1, ma che inserto attiva un trigger che inserisce una riga in table2, quindi @@IDENTITY
restituirà l'identità dal table2 mentre SCOPE_IDENTITY
tornerà l'identità da tabella1.
INSERT INTO my_table (my_column) VALUES ('test')
-- return the identity of the row you just inserted into my_table
-- regardless of any other inserts made by triggers etc
SELECT SCOPE_IDENTITY() AS ins_id
No; funziona molto come SELECT LAST_INSERT_ID() in mysql, recuperando l'ultimo valore di identità inserito. Si consiglia di dare un'occhiata a this in-depth examination per ulteriori informazioni su ciò che si vorrebbe essere preoccupato con esso.
Ecco uno snippet di codice in qualche modo basato sul codice Joomla. $ dbh è una connessione al database (risultato di mssql_connect()). Il nome della chiave (ID) viene aggiornato se si passa l'argomento $ keyName.
Questo codice utilizza la parola chiave MSSQL "OUTPUT" per ottenere l'ID (o qualsiasi valore richiesto) del valore inserito.
function mssql_insertObject($table, &$object, $keyName = NULL)
{
global $dbh;
if($keyName) {
$fmtsql = 'INSERT INTO '. $table .' (%s) OUTPUT INSERTED.' . $keyName . ' VALUES (%s) ';
}
else {
$fmtsql = 'INSERT INTO '. $table .' (%s) VALUES (%s) ';
}
$fields = array();
foreach (get_object_vars($object) as $k => $v) {
if (is_array($v) or is_object($v) or $v === NULL) {
continue;
}
if ($k[0] == '_') { // internal field
continue;
}
$fields[] = $k;
$values[] = "'" . str_replace("'", "''", $v) . "'";
}
$sql = sprintf($fmtsql, implode(",", $fields) , implode(",", $values));
$query = mssql_query($sql, $dbh);
if($query === false) {
return false;
}
if(is_resource($query))
{
if($keyName) {
$id = mssql_result($query, 0, 0);
if($id) {
$object->$keyName = $id;
}
}
mssql_free_result($query);
}
return true;
}
Mi piace questa soluzione perché credo che copra tutte le tue basi poiché non puoi ottenere un GUID (pk) con SCOPE_IDENTITY ..ma usando mssql_result in congiunzione con OUTPUT INSERTED nella tua istruzione sql funziona con pk's che sono interi auto incrementati o unici punge come GUID. – greaterKing
- 1. estensione php mssql su wamp
- 2. Powershell Set Lid Close Azione
- 3. MSSQL in python 2.7
- 4. Linux - PHP 7.0 e MSSQL (Microsoft SQL)
- 5. Inserimento di valori di array PHP in un array javascript?
- 6. Come ottenere informazioni di sistema in PHP?
- 7. mssql converte varchar in float
- 8. Inserimento di una matrice php multidimensionale in un database mysql
- 9. Come ottenere l'ID oggetto in PyMongo dopo un inserimento?
- 10. CASE in MSSQL clausola WHERE - odbc error
- 11. Memorizzazione di JSON in un database msSQL?
- 12. PHP: inserimento di un riferimento in un array?
- 13. Inserimento di caratteri danesi in sql server da PHP
- 14. Come ottenere il valore restituito da JDBC MSSQL
- 15. Come posso inserire 100000 righe su MSSQL?
- 16. Come ottenere la disconnessione automatica in php?
- 17. Come ottenere l'estensione del file in PHP?
- 18. Come ottenere user agent in PHP
- 19. Come ottenere risposta utilizzando cURL in PHP
- 20. Come ottenere dati JSON in php?
- 21. Prendi solo la parte Data di DateTime in mssql
- 22. dopo() elemento di inserimento, quindi ottenere indietro
- 23. Come inserire dati binari in MSSQL utilizzando PDO
- 24. Inserimento di interruzioni di riga in PDF
- 25. ottenere ora UTC in PHP
- 26. MSSQL row_number() su (ORDER BY) in MySql
- 27. PHP: inserimento dei valori dal modulo in MySQL
- 28. Ottenere parametri di cookie in PHP?
- 29. Utilizzando LastIndexOf e SubString in mssql
- 30. Inserimento di oggetti in java.util.Properties
Ho visto anche: SELEZIONE CAST (COALESCE (SCOPE_IDENTITY(), @@ IDENTITY) AS int) – jjwdesign
giù votato. Non vedo alcun php, la domanda era "Come ottenere l'ID di inserimento in MSSQL in PHP". –