Saisir la dernière insertion insert sqlsrv

Je travaille sur un code php où je l'insère dans deux tables et que je veux saisir l'identifiant de la première table que j'ai insérée, en ce moment je reçois cette erreur: Call to undefined function sqlsrv_field() . routine_id d'attraper le routine_id des routines table.

Code:

 date_default_timezone_set('Europe/Oslo'); $date = strftime ('%Y-%m-%d'); $time = strftime('%H:%M:%S'); $value = $_GET['Temp']; $conn = sqlsrv_connect('BILAL' , $conn_array); $sql = "Insert into routines (date, time, value, emp_id) values ('$date', '$time', '$value', (SELECT id FROM emps WHERE user_name='Arduino'))"; if ( sqlsrv_begin_transaction( $conn ) === false ) { die( print_r( sqlsrv_errors(), true )); } $query = sqlsrv_query( $conn, $sql); if( $query === false ) { die( print_r( sqlsrv_errors(), true)); } sqlsrv_next_result($query); sqlsrv_fetch($query); $id = sqlsrv_field($query,0); $sql2 = "Insert into measure_routines (routine_id, measure_id, pool_id) values ('$id', (Select id from measurements where title='A_Auto_Temperatur'), 1 )"; $stmt = sqlsrv_query( $conn, $sql2); if( $stmt === false ) { die( print_r( sqlsrv_errors(), true)); } 

Il n'y a pas de fonction appelée sqlsrv_field() . Au lieu de cela, utilisez sqlsrv_get_field () :

 ... sqlsrv_next_result($query); bool fetchStatus = sqlsrv_fetch($query); if(fetchStatus === false) { die( print_r( sqlsrv_errors(), true)); } if(fetchStatus === null) { // Some work when there are no results in the result set } else { $id = sqlsrv_get_field($query, 0); } ... 

Cela devrait résoudre votre problème essentiellement. Cependant, votre code est vulnérable à l'injection SQL. Au lieu de donner des valeurs directement dans la requête SQL, pensez à utiliser des instructions préparées.

Il y a beaucoup d'articles à ce sujet, en voici un que j'ai trouvé dans la search rapide:

  • Quelle est la bonne façon de prévenir l'injection SQL dans les scripts PHP?

Essaye ça:

 function lastId($queryID) { sqlsrv_next_result($queryID); sqlsrv_fetch($queryID); return sqlsrv_get_field($queryID, 0); } $lastInsertedId = lastId($stmt);