SQL SERVER 2005存储过程向PHP返回值(数组或不带数组参数)
我在谷歌上搜索了很多关于这个话题的信息,只找到了一个描述这个话题的网站,但根据我的场景,我找不到它的解决方案 我正在使用php使用存储过程从sql server数据库检索值。我有两个存储过程。一个sp的参数中只有一个值。另一个sp的参数中有一个数组。无法在php中返回这两个值。但当我在sql srver的查询编辑器中执行它时,它工作正常并给出结果。首先请参阅我的第一个带有单值参数的sp。然后我将解释我正在做的事情和问题SQL SERVER 2005存储过程向PHP返回值(数组或不带数组参数),php,sql,sql-server,arrays,stored-procedures,Php,Sql,Sql Server,Arrays,Stored Procedures,我在谷歌上搜索了很多关于这个话题的信息,只找到了一个描述这个话题的网站,但根据我的场景,我找不到它的解决方案 我正在使用php使用存储过程从sql server数据库检索值。我有两个存储过程。一个sp的参数中只有一个值。另一个sp的参数中有一个数组。无法在php中返回这两个值。但当我在sql srver的查询编辑器中执行它时,它工作正常并给出结果。首先请参阅我的第一个带有单值参数的sp。然后我将解释我正在做的事情和问题 ALTER PROCEDURE getStoryid (@storyid A
ALTER PROCEDURE getStoryid (@storyid AS varchar(18), @nstoryid AS NVARCHAR(30),
@ntypeid AS NVARCHAR(30))
AS
Declare @sql AS nvarchar(MAX)
SET @sql = 'SELECT es.storyid, es.userid, es.catid, es.heading, es.isapproved,
es.coverpic, es.story, es.created from et_stories es
where es.storyid = ' + @storyid
if (@ntypeid !=3)
SET @sql= @sql + 'and es.userid = ' + @nstoryid
EXEC(@sql)
GO
当我这样执行它的时候
EXEC getStoryid '1','9' ,'3'
然后它在SQLServer编辑器中给出了结果,但在我从php调用此过程时显示了错误
这是我的php代码
$sql = "EXEC getStoryid '". $storyid ."','". $nstoryid ."' ,'". $ntypeid ."'";
$query = $this->db->query($sql);
第二个sp for array参数相同,但我正在通过$storyid参数或@storyid参数传递数组
请告诉我任何使用php从db获取值的简单解决方案,或者我认为sqlsrver 2005中可能有任何返回函数。我想您正在寻找这个
$link=mssql_connect($server、$user、$pass));
如果(!$link){
die('连接到MSSQL时出错');
}
mssql_select_db('dbname',$link);
$stmt=mssql_init(“[getStoryid]”);
$storyid=1;
$nstoryid=9;
$ntypeid=3;
//绑定字段名
mssql_绑定($stmt,@storyid',$storyid,SQLINT2,false,false);
mssql_绑定($stmt,@nstoryid',$nstoryid,SQLINT2,false,false);
mssql_绑定($stmt,@ntypeid',$ntypeid,SQLINT2,false,false);
//执行
$result=mssql\u execute($stmt);
//自由声明
mssql_免费_声明($stmt);
$array=array();
while($row=mssql\u fetch\u assoc($result)){
$array[]=$row;
}
mssql_关闭($link);
回声';
打印(数组);
回声';
你读这一章很重要
$link = mssql_connect($server, '$user', '$pass');
if (!$link) {
die('Something went wrong while connecting to MSSQL');
}
mssql_select_db('dbname', $link);
$stmt = mssql_init('[getStoryid]');
$storyid = 1;
$nstoryid = 9;
$ntypeid = 3;
// Bind the field names
mssql_bind($stmt, '@storyid ', $storyid, SQLINT2, false, false);
mssql_bind($stmt, '@nstoryid', $nstoryid, SQLINT2, false, false);
mssql_bind($stmt, '@ntypeid ', $ntypeid, SQLINT2, false, false);
// Execute
$result = mssql_execute($stmt);
// Free statement
mssql_free_statement($stmt);
$array=array();
while ($row = mssql_fetch_assoc($result)) {
$array[] = $row;
}
mssql_close($link);
echo '<pre>';
print_r($array);
echo '</pre>';