我 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/