4

我对这个 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 Driver]参数号无效,SQL 状态 S1093”

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

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

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

4

2 回答 2

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

应该

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

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

于 2012-06-07T16:08:16.813 回答
0
Below is the Code to execute MS SQL Stored Procedure in PHP

$DBConnString="DRIVER={SQL Server};SERVER=localhost;DATABASE=ERPDev";
$DBUsername="sa";
$DBPswd="";
$DBConnect = odbc_connect($DBConnString, $DBUsername, $DBPswd);  

$Param1 = '2';
$query_string = "P_Test[$Param1]";
$ResultSet = odbc_prepare($DBConnect, $query_string);
odbc_execute($ResultSet);
// odbc_result_all($ResultSet);
while($obRows = odbc_fetch_object($ResultSet))
{
    print $obRows->UserId." - ";
    print $obRows->UserFirstName." - ";
    print $obRows->UserLastName."<br />";
}
odbc_free_result($ResultSet);
odbc_close($DBConnect); 
于 2013-01-05T07:45:27.043 回答