PHP ODBC 存储过程无效参数号

标签 php stored-procedures odbc

我 100% 是 SQL/PHP/ODBC/FBI/TLA 等世界的新手,所以如果我问的问题非常基础,我深表歉意。

我正在使用一个存储过程,该过程使用邮政编码的纬度/经度数据库将中心邮政编码和给定的英里半径作为 2 个输入参数,然后返回该给定英里半径内的邮政编码数组。当我在我的 SQL 查看器中运行它时它工作得很好,但是当我尝试使用 php 来做同样的事情时,我只得到无效参数错误。

$connstr = "Driver={SQL Server};Server=MyServer;Database=MyDatabase;";
$conn = odbc_connect($connstr, "Name", "PW");

$query_string = " CALL FindZipCodeWithinRadius(?,?)  ";

$sp = odbc_prepare($conn, $query_string);
$zipcodes = odbc_execute($sp,array(" 14602, 35"));

print_r($zipcodes);

当我像这样运行代码时,出现错误“没有足够的参数(1 应该是 2)”

我在这些输入参数周围尝试了不同的双引号/单引号迭代,但它们都给我上述错误,或者这个错误:

“SQL 错误:[Microsoft][ODBC SQL Server 驱动程序]参数编号无效,SQL 状态 S1093”

快速谷歌搜索让我相信第二个错误意味着有太多的参数被读入过程,那么我是如何在跳过所需的 2 的同时从 1 变为多的?

数据库在 SQL 2000 上,如果有区别的话。

有什么想法吗?感谢您的任何帮助,您可以提供。

最佳答案

$zipcodes = odbc_execute($sp,array(" 14602, 35"));

应该是

$zipcodes = odbc_execute($sp,array("14602", "35"));

在您的执行中,您传递了 1 个数组值“14602, 35”,而您的准备语句正在寻找 2。

关于PHP ODBC 存储过程无效参数号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10935516/

相关文章:

PHP ODBC 扩展 - 数据源名称太长

database - 如何将 pyodbc 连接到 Access (.mdb) 数据库文件

odbc - 微软 odbc drivermanager SQLColAttribute SQL_INVALID_HANDLE

php - 使用 JSMin.php 缩小 Javascript

javascript - 我似乎无法使这个 if 语句在 Javascript 中工作 :S

sql-server - 捕获 block 不处理错误

sql - 触发器、存储过程与 DAL 中的内联 SQL 用于更新具有历史记录的数据库中的表

php - 停止 CKEditor 删除 div

php - mysqli_commit 失败会自动回滚吗?

mysql - 从 'SELECT' 存储过程返回 INT 值