我们现在有一个大学生在做工作经验,他正在为我们做一个 Wordpress 原型(因为我们既没有 Wordpress 也没有 PHP 经验)。
它在 Windows 服务器上运行,而 Wordpress 本身在 mySQL 中运行,因为我们所有现有的数据库都在 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”,它会返回数据,但我们不能调用存储过程(当然,我们用它来做所有事情!)。
知道他哪里可能出错了吗?