Php sqlsrv_get_字段未返回ID
我在尝试获取最后插入行的主键(VisitID)时遇到问题 无论何时运行查询,都会更新数据库,但sqlsrv_get_字段永远不会返回VisitID。我应该使用sqlsrv\u查询而不是sqlsrv\u prepare,还是我完全缺少什么Php sqlsrv_get_字段未返回ID,php,sql,sql-server,sqlsrv,Php,Sql,Sql Server,Sqlsrv,我在尝试获取最后插入行的主键(VisitID)时遇到问题 无论何时运行查询,都会更新数据库,但sqlsrv_get_字段永远不会返回VisitID。我应该使用sqlsrv\u查询而不是sqlsrv\u prepare,还是我完全缺少什么 $addvisitquery = " INSERT INTO blah; SELECT SCOPE_IDENTITY() AS VisitID"; $addVisit = sqlsrv_prepare($connect,$add
$addvisitquery = "
INSERT INTO blah;
SELECT SCOPE_IDENTITY() AS VisitID";
$addVisit = sqlsrv_prepare($connect,$addvisitquery);
if( sqlsrv_execute($addVisit))
{
echo "Statement executed.\n <br />";
echo "Number of rows updated:".sqlsrv_rows_affected($addVisit)." <br />";
sqlsrv_next_result($addVisit)." <br />";
sqlsrv_fetch($addVisit);
echo "Returned VisitID:".sqlsrv_get_field($addVisit, 0)." <br />";
sqlsrv_commit($connect);
$addvisitquery=”
插入废话;
选择SCOPE_IDENTITY()作为VisitID”;
$addVisit=sqlsrv\u prepare($connect,$addvisitquery);
if(sqlsrv_执行($addVisit))
{
echo“已执行语句。\n
”;
echo“更新的行数:”.sqlsrv_受影响的行数($addVisit)。“
”;
sqlsrv_下一个结果($addVisit)。“
”;
sqlsrv_fetch($addVisit);
echo“Returned VisitID:”.sqlsrv_get_字段($addVisit,0)。“
”;
sqlsrv_提交($connect);
我在这里找到了答案:
非常简单,请确保SQL语句具有以下内容以返回最后插入的行:
; SELECT SCOPE_IDENTITY()
创建一个php函数:
function lastInsertId($queryID) {
sqlsrv_next_result($queryID);
sqlsrv_fetch($queryID);
return sqlsrv_get_field($queryID, 0);
}
然后将此行添加到查询函数:
echo "The last inserted row ID is ".lastInsertId($addVisit);
与原始代码的相关区别是什么?乍一看,它们看起来非常相似:-?函数
sqlsrv\u next\u result($addVisit)
旁边的
的目的是什么?该行没有print或echo命令,因此,我猜它会阻止该函数成功执行。