[英]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.