0

我在一个简单的查询中遇到了一个非常烦人的问题。

所以:

INSERT INTO [SapuV2].[dbo].[ALERGIA] ([DESCRIPCION]) OUTPUT INSERTED.PK_ALERGIA VALUES ('test')

PK_ALERGIA 是一个主要的身份密钥,我需要创建新的 id。

PHP代码:

$sql = "INSERT INTO ALERGIA (DESCRIPCION) OUTPUT INSERTED.PK_ALERGIA VALUES(?)";
$id = 0;
$params = array(
  array(&$nombre, SQLSRV_PARAM_IN),
  array(&$id, SQLSRV_PARAM_OUT, SQLSRV_PHPTYPE_INT)
);
$stmt = sqlsrv_prepare($this->Conn, $sql, $params);
if( sqlsrv_execute($stmt) === false){
  die( print_r( sqlsrv_errors(), true) );
}else{
  var_dump($id);
}

我可以在我的 BD 上保存记录,但 $id 始终为 0 ...

谢谢 ;)

4

2 回答 2

0

请试试这个:

INSERT INTO ALERGIA (DESCRIPCION)select @var=scope_identity()
于 2013-08-22T15:46:12.977 回答
0

我终于做到了,但我并不自豪......

使用相同的 SQL 查询,但将 sqlsrv_execute 更改为 sqlsrv_fetch_array

$sql = "INSERT INTO ALERGIA ([DESCRIPCION]) OUTPUT INSERTED.PK_ALERGIA VALUES (?)";
$params = array(
  array(&$nombre, SQLSRV_PARAM_IN)
);
$rows = sqlsrv_query($this->Conn, $sql, $params);
if($rows === false){
  die(var_dump(sqlsrv_errors()));
}else{
  while($row = sqlsrv_fetch_array($rows, SQLSRV_FETCH_ASSOC)){
    var_dump($row);
  }
}
于 2013-08-22T16:39:44.173 回答