从PHP上的SQL SERVER查询中检索Param

时间:2013-08-22 15:41:45

标签: php sql-server sql-server-2008

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

所以:

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 ......

谢谢;)

2 个答案:

答案 0 :(得分:0)

请试试这个:

INSERT INTO ALERGIA (DESCRIPCION)select @var=scope_identity()

答案 1 :(得分: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);
  }
}