我一直在通过向我公司的一个网页添加一些功能来学习 PHP,以在将新记录插入数据库之前验证 SSN 的用户输入。那部分工作正常。数据库插入涉及调用具有输出参数的 SQL Server 存储过程,该参数返回新记录的 GUID 以供后续过程使用。数据库插入部分有效,但是当我回显返回参数的值时,它是一个空字符串。
以下是相关细节: SQL Server 2008 在单独的服务器上运行 WAMP Server 2.2 在 Windows 64 PC 上运行 PHP 5.3.1 Apache 2.2.22
这是我的PHP代码:
$conn = new PDO( "odbc:Driver={SQL Server};Server=xxx.xxx.xx.xx;Database=xxxxx;charset=UTF-8'", "uid", "pwd");
if(!$conn) {
die( "<br />Error connecting to SQL Server");
}
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$resource_id = "";
$stmt = $conn->prepare("{CALL xxxx.dbo.app_sp_insert_rq(?, ?, ?, ?, ?, ?, ?, ?)}");
$stmt->bindParam(1, $survey_text, PDO::PARAM_STR);
$stmt->bindParam(2, $event_date, PDO::PARAM_STR);
$stmt->bindParam(3, $type_id, PDO::PARAM_STR);
$stmt->bindParam(4, $description, PDO::PARAM_STR);
$stmt->bindParam(5, $folder_id, PDO::PARAM_STR);
$stmt->bindParam(6, $has_details, PDO::PARAM_STR);
$stmt->bindParam(7, $uid, PDO::PARAM_STR);
$stmt->bindParam(8, $resource_id, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 100);
$stmt->execute();
echo $resource_id;
这是存储过程的定义:
CREATE PROCEDURE [dbo].[app_sp_insert_rq]
@survey_text nvarchar(max),
@event_date nvarchar(20),
@type_id nvarchar(100),
@description nvarchar(100),
@folder_id nvarchar(100),
@has_details nchar(1),
@uid nvarchar(100),
@resource_id nvarchar(100) output
AS
select @resource_id = NEWID()
insert into
xxxxx.dbo.app_events (
resource_id,
event_date,
[type_id],
[description],
folder_id,
has_details,
[uid],
survey_text
)
values (
@resource_id,
@event_date,
@type_id,
@description,
@folder_id,
@has_details,
@uid,
@survey_text
)
任何帮助都感激不尽。我只是通过多次搜索才走到这一步,但这是我无法解决的一个障碍。