从PHP页面调用SQL Server存储过程,并接收字符串输出参数
我试图从PHP页面调用SQL Server存储过程,并让存储过程在输出参数中返回字符串值 我已经有很多PHP页面成功地调用了SQL Server存储过程,这些过程返回一个整数值。我还有一个PHP页面,它执行一个简单的SELECT语句并返回一个字符串值。但是现在我有了一个存储的proc,它从PHP页面接受一个输入参数,然后从几个表中选择一些数据,并通过将它与一些静态文本连接起来创建一个全新的字符串。我想将连接的字符串返回到调用PHP页面 这是我的存储过程:从PHP页面调用SQL Server存储过程,并接收字符串输出参数,php,sql-server,stored-procedures,Php,Sql Server,Stored Procedures,我试图从PHP页面调用SQL Server存储过程,并让存储过程在输出参数中返回字符串值 我已经有很多PHP页面成功地调用了SQL Server存储过程,这些过程返回一个整数值。我还有一个PHP页面,它执行一个简单的SELECT语句并返回一个字符串值。但是现在我有了一个存储的proc,它从PHP页面接受一个输入参数,然后从几个表中选择一些数据,并通过将它与一些静态文本连接起来创建一个全新的字符串。我想将连接的字符串返回到调用PHP页面 这是我的存储过程: CREATE PROCEDURE CHE
CREATE PROCEDURE CHECK_SPONSOR_CODE
@cr_code VARCHAR(50),
@sponsor VARCHAR(255) OUTPUT
AS
DECLARE @xrowcount INT;
BEGIN
SET NOCOUNT ON;
BEGIN
SELECT @xrowcount = count(custom0)
FROM person_table
WHERE custom0 = @cr_code
AND custom5 = 'Yes';
IF (@xrowcount = 0)
BEGIN
SELECT @sponsor = 'Error (Unknown Code) - the Sponsor Code provided is invalid. Please check that you have entered the correct code.';
END
IF (@xrowcount > 1)
BEGIN
SELECT @sponsor = 'Error (Multiple Sponsors) - the Sponsor Code provided is invalid. Please contact the System Administrator.';
END
IF (@xrowcount = 1)
BEGIN
SELECT
@sponsor = 'Success! Your Sponsor is: ' + p.fname + ' ' + p.lname + ' (' + c.name + ')'
FROM
person_table p INNER JOIN
company_table c ON p.company_id = c.id
WHERE
p.custom0 = @cr_code
AND p.custom5 = 'Yes';
END
END
END
这是我的PHP页面(check_code.PHP):
但这只是产生了以下错误:
警告:sqlsrv_num_rows()希望参数1是资源,布尔值在第23行的D:\Apache2.2\htdocs\check_code2.php中给出
遇到错误,请与支持部门联系
关于如何从存储过程中取回字符串,我有什么想法吗?所以我从来没有想到如何用存储过程解决这个问题(如果有人愿意提供如何解决这个问题的指导,我将不胜感激);但我确实用了一种稍微不同的方法解决了这个问题。以下是我的PHP代码:
<?php
function check_sponsor_code() {
//$sponsor_code = $_GET['crcode'];
$sponsor_code = "test_cr_code";
$sponsor = "";
$serverName = "server\dbname, 31433";
$connectionInfo = array( "Database"=>"dbname", "UID"=>"username", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
$query = "SELECT
p.fname + ' ' + p.lname + ' (' + c.name2 + ')' AS sponsor
FROM
person_table p INNER JOIN
company_table c ON p.company_id = c.id
WHERE
p.custom5 = 'Yes'
AND p.custom0 = ?";
if(! $conn ){
die('Could not connect: ');
}
$params = array($sponsor_code);
$stmt = sqlsrv_query($conn, $query, $params, array( "Scrollable" => 'static' ));
if ($stmt) {
$row_count = sqlsrv_num_rows($stmt);
//echo "Row count: ".$row_count."<br/>";
if ($row_count == 0) {
$sponsor = "Error (Unknown Code) - the Sponsor Code provided is invalid. Please check that you have entered the correct code.";
} elseif ($row_count > 1) {
$sponsor = "Error (Multiple Sponsors) - the Sponsor Code provided is invalid. Please contact the System Administrator.";
} elseif ($row_count == 1){
while($row = sqlsrv_fetch_array($stmt)){
$sponsor = "Success! Your Headway DNA Sponsor is: ".($row['sponsor']);
}
} else {
$sponsor = "An unknown error occurred.";
}
} else {
echo "Error verifying record: Invalid Sponsor Code...<br/>";
}
sqlsrv_close($conn);
echo $sponsor;
}
check_sponsor_code();
?>
这意味着如果请求返回布尔值,则该请求尚未实现。
$params = array(
array($crcode, SQLSRV_PARAM_IN),
array($sponsor, SQLSRV_PARAM_INOUT)
);
$stmt = sqlsrv_query($conn, $query, $params);
$row_count = sqlsrv_num_rows( $stmt );
if ($stmt) {
sqlsrv_next_result($stmt);
echo $sponsor;
} else {
echo "Error encountered, please contact support";
}
<?php
function check_sponsor_code() {
//$sponsor_code = $_GET['crcode'];
$sponsor_code = "test_cr_code";
$sponsor = "";
$serverName = "server\dbname, 31433";
$connectionInfo = array( "Database"=>"dbname", "UID"=>"username", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
$query = "SELECT
p.fname + ' ' + p.lname + ' (' + c.name2 + ')' AS sponsor
FROM
person_table p INNER JOIN
company_table c ON p.company_id = c.id
WHERE
p.custom5 = 'Yes'
AND p.custom0 = ?";
if(! $conn ){
die('Could not connect: ');
}
$params = array($sponsor_code);
$stmt = sqlsrv_query($conn, $query, $params, array( "Scrollable" => 'static' ));
if ($stmt) {
$row_count = sqlsrv_num_rows($stmt);
//echo "Row count: ".$row_count."<br/>";
if ($row_count == 0) {
$sponsor = "Error (Unknown Code) - the Sponsor Code provided is invalid. Please check that you have entered the correct code.";
} elseif ($row_count > 1) {
$sponsor = "Error (Multiple Sponsors) - the Sponsor Code provided is invalid. Please contact the System Administrator.";
} elseif ($row_count == 1){
while($row = sqlsrv_fetch_array($stmt)){
$sponsor = "Success! Your Headway DNA Sponsor is: ".($row['sponsor']);
}
} else {
$sponsor = "An unknown error occurred.";
}
} else {
echo "Error verifying record: Invalid Sponsor Code...<br/>";
}
sqlsrv_close($conn);
echo $sponsor;
}
check_sponsor_code();
?>