php 执行存储过程无效,PHP ODBC存储过程无效的参数号

在尝试使用PHP通过ODBC连接调用SQL Server存储过程时,遇到参数错误。存储过程需要两个参数,邮政编码和半径,但在PHP中执行时,错误提示参数数量不正确。解决方案是将参数从一个数组改为两个单独的参数。原始代码中,参数被作为一个字符串传递,而应该分别传递。修复后的代码正确地将邮政编码和半径作为两个独立的参数传递,解决了问题。

我对这个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?

如果有所不同,数据库在SQL 2000上.

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

解决方法:

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

应该

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

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

标签:php,stored-procedures,odbc

来源: https://codeday.me/bug/20190630/1333272.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值