現在、大学の学生が実務経験をしており、彼は私たちのために Wordpress のプロトタイプを作成しています (私たちには Wordpress も PHP の経験もないため)。
既存のデータベースはすべて MS SQL Server 2005/2008 にあり、彼は次のコードを使用して php ページでストアド プロシージャを呼び出そうとしています。
$connection = odbc_connect('DB', 'UNAME', 'PWORD');
$request = odbc_prepare($connection, "CALL ProcName(?, ?, ?)");
if(!$request) die("Could not prepare statement:" . odbc_errormsg());
$result = odbc_execute($request, array("var1", "var2", "var3"));
if(!$result) die("Could not execute statement:" . odbc_errormsg());
ストアド プロシージャは次のようになります。
ROCEDURE [dbo].[ProcName]
(@option1 varchar(50),
@option2 varchar(50),
@option3 varchar(50))
AS
... lots of logic end with...
select * from tblName
ストアド プロシージャは .net ページと Livelink CMS ページの両方で使用され、正しく動作しますが、php から呼び出そうとすると、次のエラーが発生します。
"odbc_execute(): SQL error: [Microsoft][ODBC SQL Server Driver]Invalid parameter number, SQL state S1093 in SQLDescribeParameter in C:\inetpub\wordpress\test.php on line 29"
奇妙なことに、プロシージャ呼び出しの名前を存在しないストアド プロシージャに変更すると、ストアド プロシージャが見つからないタイプのエラーではなく、まったく同じエラーが発生します。
SQL を直接実行できます。つまり、"select * from etc" を実行すると、データが返されますが、ストアド プロシージャを呼び出すことはできません (もちろん、ストアド プロシージャはすべてに使用されます!)。
彼がどこで間違っている可能性がありますか?