我对这个 SQL/PHP/ODBC/FBI/TLA 等世界是 100% 全新的。所以如果我问的是非常基本的,我深表歉意。
我正在使用一个存储过程,该过程使用邮政编码的纬度/经度数据库将中央邮政编码和给定的英里半径作为 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”
一个快速的谷歌搜索让我相信第二个错误意味着有太多的参数被读入到 proc 中,那么我是如何在跳过所需的 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/