【发布时间】:2012-12-11 20:19:33
【问题描述】:
我一直在通过向我公司的一个网页添加一些功能来学习 PHP,以在将新记录插入数据库之前验证 SSN 的用户输入。那部分工作正常。数据库插入涉及调用 SQL Server 存储过程,该存储过程具有一个输出参数,该参数返回新记录的 GUID 以供后续过程使用。数据库插入部分有效,但是当我回显返回参数的值时,它是一个空字符串。
以下是相关细节: SQL Server 2008 在单独的服务器上运行 在 Windows 64 PC 上运行的 WAMP Server 2.2 PHP 5.3.1 阿帕奇 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
)
任何帮助将不胜感激。我只是通过多次搜索才走到这一步,但这是我无法解决的一个障碍。
【问题讨论】:
标签: php sql parameters pdo output