Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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
使用PHP ADODB、MSSQL sqlsrv和参数执行存储过程_Php_Sql Server_Stored Procedures_Adodb_Sqlsrv - Fatal编程技术网

使用PHP ADODB、MSSQL sqlsrv和参数执行存储过程

使用PHP ADODB、MSSQL sqlsrv和参数执行存储过程,php,sql-server,stored-procedures,adodb,sqlsrv,Php,Sql Server,Stored Procedures,Adodb,Sqlsrv,帮助我使用PHPADODB、MSSQ执行带参数的存储过程 $stmt = $db->PrepareSP('VM_SEARCH_SMSC');//stored procedure VM_SEARCH_SMSC $search = 'test'; $string = 'SearchString'; $db->InParameter($stmt,$search,$string); //return values. $data = array(); $data['SNo'] = 0; $d

帮助我使用PHPADODB、MSSQ执行带参数的存储过程

$stmt = $db->PrepareSP('VM_SEARCH_SMSC');//stored procedure VM_SEARCH_SMSC
$search = 'test';
$string = 'SearchString';
$db->InParameter($stmt,$search,$string);

//return values.
$data = array();
$data['SNo'] = 0;
$data['SNSCID'] = 0;
$data['SMSCNAME'] = 0;
$data['MODE'] = '';
$data['ISACTIVE'] = 0;
$data['FIELD1'] = 0;
$data['ISBIND'] = 0;
$data['BNDOTHERRSRC'] = '';
$data['THRPT'] = '';

$db->OutParameter($statement, $data['SNo'], 'SNo');
$db->OutParameter($statement, $data['SNSCID'], 'SNSCID');
$db->OutParameter($statement, $data['SMSCNAME'], 'SMSCNAME');
$db->OutParameter($statement, $data['MODE'], 'MODE');
$db->OutParameter($statement, $data['ISACTIVE'], 'ISACTIVE');
$db->OutParameter($statement, $data['FIELD1'], 'FIELD1');
$db->OutParameter($statement, $data['ISBIND'], 'ISBIND');
$db->OutParameter($statement, $data['BNDOTHERRSRC'], 'BNDOTHERRSRC');
$db->OutParameter($statement, $data['THRPT'], 'THRPT');

$result = $db->Execute($stmt);
if (!$result){
    print $db->ErrorMsg();
    echo '<br /><br />';
}
$stmt=$db->PrepareSP('VM\u SEARCH\u SMSC')//存储过程VM\u搜索\u SMSC
$search='test';
$string='SearchString';
$db->InParameter($stmt,$search,$string);
//返回值。
$data=array();
$data['SNo']=0;
$data['SNSCID']=0;
$data['SMSCNAME']=0;
$data['MODE']='';
$data['ISACTIVE']=0;
$data['FIELD1']=0;
$data['ISBIND']=0;
$data['bndothersrc']='';
$data['THRPT']='';
$db->OutParameter($statement,$data['SNo'],'SNo');
$db->OutParameter($statement,$data['SNSCID'],'SNSCID');
$db->OutParameter($statement,$data['SMSCNAME'],'SMSCNAME');
$db->OutParameter($statement,$data['MODE'],'MODE');
$db->OutParameter($statement,$data['ISACTIVE'],'ISACTIVE');
$db->OutParameter($statement,$data['FIELD1'],'FIELD1');
$db->OutParameter($statement,$data['ISBIND'],'ISBIND');
$db->OutParameter($statement,$data['BNDOTHERRSRC'],'BNDOTHERRSRC');
$db->OutParameter($statement,$data['THRPT'],'THRPT');
$result=$db->Execute($stmt);
如果(!$result){
打印$db->ErrorMsg();
回音“

”; }
错误:

SQLState:42000错误代码:201消息:[Microsoft][SQL Server本机] 客户端11.0][SQL Server]过程或函数“VM\u SEARCH\u SMSC”需要 未提供参数'@SearchString'


有人帮我解决一下

根据我的调查,MSSQL的ADODB驱动程序似乎不支持带参数的存储过程。使用sqlsrv

$serverName = "XX.XX.XX.XXX";
$connectionInfo = array( "Database"=>"XXXXX", "UID"=>"XXXXX", "PWD"=>"XXX","ConnectionPooling" => "1","MultipleActiveResultSets"=>'0');

$conn = sqlsrv_connect( $serverName, $connectionInfo );
if( $conn === false ) {
    die( print_r( sqlsrv_errors(), true));
}    

$stmt = "{ CALL VM_SEARCH_SMSC (?)}"; //calling stored procedure with single parameter.
$search='t'; //search string
$params = array($search);
$result = sqlsrv_query( $conn, $stmt,$params,array('Scrollable' => 'buffered')); //add Scrollable to get sqlsrv_num_rows.
echo $row_count = sqlsrv_num_rows( $result );
echo '<br>';

if( $result === false) {
    die( print_r( sqlsrv_errors(), true) );
} else{
while ($row = sqlsrv_fetch_array($result)) {
    // This never prints.
    echo "row:<br>"; var_dump($row); echo "<br><br>";
}
}
//print_r($row);
sqlsrv_free_stmt( $stmt);
$serverName=“XX.XX.XX.XXX”;
$connectionInfo=array(“数据库”=>“XXXXX”、“UID”=>“XXXXX”、“PWD”=>“XXX”、“连接池”=>“1”、“多个活动结果集”=>“0”);
$conn=sqlsrv_connect($serverName,$connectionInfo);
如果($conn==false){
模具(打印错误(sqlsrv_errors(),true));
}    
$stmt=“{CALL VM_SEARCH_SMSC(?)}”//使用单个参数调用存储过程。
$search='t'//搜索字符串
$params=数组($search);
$result=sqlsrv_查询($conn、$stmt、$params、array('Scrollable'=>'buffered'))//添加可滚动以获取sqlsrv_num_行。
echo$row\u count=sqlsrv\u num\u rows($result);
回声“
”; 如果($result==false){ 模具(打印错误(sqlsrv_errors(),true)); }否则{ while($row=sqlsrv\u fetch\u数组($result)){ //这张照片从不打印。 echo“行:
”变量转储($row);echo“

”; } } //打印(行); sqlsrv_free_stmt($stmt);

这是与sqlsrv一起工作的。

在给定链接“ughai”上没有解决方案的可能重复。您可以检查
InParameter
返回的值,看看它是否实际绑定了值或是自动失败?根据我的调查,似乎MSSQL的ADODB驱动程序不支持带参数的存储过程。使用sqlsrv绑定参数。