php sql bind,mssql_bind

[#9]

fheald at buzztime dot com [2007-08-06 12:27:13]

mssql_bind binds by reference, not by value, even on input parameters.  Improper binding can cause strange errors; in my case "Error converting data type varchar to int"

--SAMPLE STORED PROCEDURE

CREATE Procedure [dbo].[myproc]

(

@one VARCHAR(10) = 'n1',

@two VARCHAR(10) = 'n2',

@three VARCHAR(10) = 'n3',

@four VARCHAR(10) = 'n4',

@five VARCHAR(10) = 'n5'

)

AS

BEGIN

SET NOCOUNT ON;

SELECT

@one AS 'one',

@two AS 'two',

@three AS 'three',

@four AS 'four',

@five AS 'five'

END

//SAMPLE PHP CALL

$sp_name = 'mydb.dbo.myproc';

$proc = mssql_init($sp_name);

$sp_parms->one = 'one';

$sp_parms->two = 'two';

$sp_parms->three = 'three';

foreach ($sp_parms as $key=>$parm) {

#THIS FAILS, because it's binding values!

#mssql_bind($proc, '@'.$key, $parm, SQLVARCHAR)

#    or die("Unable to bind $sp_name:$key
".mssql_get_last_message());

#THIS SUCCEEDS, USES A REFERENCE

mssql_bind($proc, '@'.$key, $sp_parms->$key, SQLVARCHAR)

or die("Unable to bind $sp_name:$key
".mssql_get_last_message());

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值