我对这个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上,如果这有所不同。
有什么想法吗?感谢您的任何帮助,您可以提供。
答案 0 :(得分:3)
$zipcodes = odbc_execute($sp,array(" 14602, 35"));
应该是
$zipcodes = odbc_execute($sp,array("14602", "35"));
在执行中,您传递的是1个数组值,“14602,35”,您准备好的语句正在寻找2。
答案 1 :(得分: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);