4

私はSQL/PHP / ODBC / FBI / TLAなどのこの世界に100%真新しいので、私が求めていることが信じられないほど基本的であるかどうかをお詫びします。

郵便番号のlat/longデータベースを使用して、中央の郵便番号と指定されたマイル半径を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番目のエラーは、プロシージャに読み込まれるパラメータが多すぎることを意味していると思います。目的の2をスキップして、1から多数に変更するにはどうすればよいですか。

違いが生じる場合、データベースはSQL2000上にあります。

何か案は?あなたが提供できるどんな助けにも感謝します。

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 に答える