2014-05-06 112 views
2

我正在处理一个php代码,我插入两个表并希望从插入的第一个表中获取id,现在我得到此错误:Call to undefined function sqlsrv_field()。我正试图从表routines中获取routine_id抓取最后一个插入ID sqlsrv

代码:

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)); 
} 

回答

2

试试这个:

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

$lastInsertedId = lastId($stmt); 
2

没有名为sqlsrv_field()功能。相反,使用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); 
} 

... 

这应该基本上解决您的问题。但是,您的代码容易受到SQL注入的影响。不要直接给sql查询赋值,可以考虑使用预处理语句。

大约有许多文章,这里是一个我在快速搜索发现: