Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL SERVER 2005存储过程向PHP返回值(数组或不带数组参数)_Php_Sql_Sql Server_Arrays_Stored Procedures - Fatal编程技术网

SQL SERVER 2005存储过程向PHP返回值(数组或不带数组参数)

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

我在谷歌上搜索了很多关于这个话题的信息,只找到了一个描述这个话题的网站,但根据我的场景,我找不到它的解决方案

我正在使用php使用存储过程从sql server数据库检索值。我有两个存储过程。一个sp的参数中只有一个值。另一个sp的参数中有一个数组。无法在php中返回这两个值。但当我在sql srver的查询编辑器中执行它时,它工作正常并给出结果。首先请参阅我的第一个带有单值参数的sp。然后我将解释我正在做的事情和问题

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>';