繁体   English   中英

使用PHP的存储过程SQL Server的问题

[英]Issues with stored procedure sql server using PHP

嗨,我正在尝试使用由数据库管理员使用PHP编写的存储过程,当使用sqlsrv_query指令时出现消息错误,但我不知道这是什么意思,谢谢您的帮助

这是PHP代码:

<?php                               
 $var_Active = 1;                       
 $var_PersonID = 0;             
$var_StartWeek = null;                                              
    $sp_name = "{CALL sp_PersonAlerts_Get(@Activ0=?,@StartWeek=?,@PersonID=?)} ";
              $params = array(
                    array($var_Active, SQLSRV_PARAM_IN),
                    array($var_StartWeek, SQLSRV_PARAM_IN),
                    array($var_PersonID, SQLSRV_PARAM_IN)
                  );
              $result = sqlsrv_query( $gaSql['link'], $sp_name, $params ) or die("<pre>" . print_r(sqlsrv_errors()) . "<br><br>$result</pre>") ;        
                    $obj = sqlsrv_fetch_object( $result );  
                                    $var_StartDate = $obj->StartDate;
                                    echo 'date: '.$var_StartDate;
               ?>

我收到的错误消息是这样的:

Array ( [0] => Array ( [0] => 01000 [SQLSTATE] => 01000 [1] => 0 
[code] => 0 [2] => [Microsoft][ODBC Driver 13 for SQL Server]
[SQL Server]@StartWeek: 2017-09-17, @EndWk: 2017-09-23 '
[message] => [Microsoft][ODBC Driver 13 for SQL Server]
[SQL Server]@StartWeek: 2017-09-17, @EndWk: 2017-09-23 ) ) 

不知道消息是什么意思,

CALL用于mysql,但是exec用于sql server执行存储过程。 另外,对于SQL Server,它不需要() 这是sql server的语法https://docs.microsoft.com/zh-cn/sql/t-sql/language-elements/execute-transact-sql

或者,您可以尝试以下操作:

$var_Active = 1;                       
 $var_PersonID = 0;             
$var_StartWeek = null;     

$serverName = "serverName\sqlexpress";
$connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

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


$params = array(
    array('$var_Active', SQLSRV_PARAM_IN),
    array('$var_StartWeek', SQLSRV_PARAM_IN),
    array('$var_PersonID', SQLSRV_PARAM_IN)
);

$sp_name = "EXEC sp_PersonAlerts_Get @Activ0 = ?, @StartWeek = ?, @PersonID=?";
$stmt = sqlsrv_prepare($conn, $sp_name, $params);

if (!sqlsrv_execute($stmt)) {
    echo "Your code is fail!";
    die( print_r( sqlsrv_errors(), true));  
}
while($row = sqlsrv_fetch_rows($stmt)){
    $var_StartDate = $row['StartDate'];
    echo 'date: '.$var_StartDate;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM