新しいレコードをデータベースに挿入する前に、SSN のユーザー入力を検証する機能を会社の Web ページの 1 つに追加することで、PHP を学んでいます。その部分はうまく機能しています。データベースの挿入には、後続のプロセスで使用する新しいレコードの GUID を返す出力パラメーターを持つ SQL Server ストアド プロシージャの呼び出しが含まれます。データベースの挿入部分は機能しますが、返されたパラメーターの値をエコーすると、空の文字列になります。
関連する詳細は次のとおりです。 別のサーバーで実行されている SQL Server 2008 Windows 64 PC で実行されている WAMP Server 2.2 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
)
どんな助けでも大歓迎です。私は複数回の検索でここまでたどり着きましたが、これは私が回避策を見つけることができなかった1つの障害です。