gpt4 book ai didi

php - 参数编号无效,SQL 状态 S1093 php odbc mssql

转载 作者:搜寻专家 更新时间:2023-10-31 22:06:20 25 4
gpt4 key购买 nike

目前我们有一个大学生正在做工作经验,他正在为我们做一个 Wordpress 原型(prototype)(因为我们既没有 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”,它会返回数据,但我们不能调用存储过程(我们当然会使用存储过程!)。

知道他可能哪里出错了吗?

最佳答案

从错误信息可以看出,错误应该来自ODBC驱动程序,因为从它的角度来看,参数编号与准备执行语句不同。

让您的学生尝试这种方法:

$parms=array("var1", "var2", "var3"); 
if (!odbc_execute($request, &$parms)) die("odbc_execute failed");

关于php - 参数编号无效,SQL 状态 S1093 php odbc mssql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17918459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com