PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

mssql_close> <Mssql 関数
Last updated: Fri, 03 Oct 2008

view this page in

mssql_bind

(PHP 4 >= 4.0.7, PHP 5, PECL odbtp:1.1.1-1.1.4)

mssql_bind ストアドプロシージャまたはリモートストアドプロシージャへパラメータを追加する

説明

bool mssql_bind ( resource $stmt , string $param_name , mixed &$var , int $type [, int $is_output [, int $is_null [, int $maxlen ]]] )

ストアドプロシージャまたはリモートストアドプロシージャへパラメータをバインドします。

パラメータ

stmt

mssql_init() で取得したステートメントリソース。

param_name

パラメータ名を表す文字列。

注意: T-SQL 構文のように @ 文字を含めなければなりません。 mssql_execute() にある例を参照ください。

var

MSSQL パラメータとしてバインドする PHP 変数。 値渡し、参照渡しのどちらも可能です。実行後に OUTPUT や RETVAL を取得するには参照渡しとします。

type

SQLTEXT, SQLVARCHAR, SQLCHAR, SQLINT1, SQLINT2, SQLINT4, SQLBIT, SQLFLT4, SQLFLT8, SQLFLTN のいずれか。

is_output

値が OUTPUT パラメータであるかどうか。OUTPUT パラメータであることに気づかなかった場合、それは通常の INPUT パラメータとして扱われ、エラーは発生しません。

is_null

パラメータが NULL かどうか。NULL 値を var に渡しても正しく動作しません。

maxlen

char/varchar 値で使用します。データの長さを指定する必要があります。 たとえばパラメータが varchar(50) の場合、型は SQLVARCHAR で、この値が 50 となります。

返り値

成功した場合に TRUE を、失敗した場合に FALSE を返します。

例1 mssql_bind() の例

<?php

$cn 
mssql_connect($DBSERVER$DBUSER$DBPASS);
mssql_select_db($DB$cn);

$sp mssql_init("WDumpAdd"); // ストアドプロシージャ名

mssql_bind($sp"@productname"stripslashes($newproduct), SQLVARCHARfalsefalse150);
mssql_bind($sp"@quantity"stripslashes($newquantity), SQLVARCHARfalsefalse50);

mssql_execute($sp);
mssql_close($cn);

?>



mssql_close> <Mssql 関数
Last updated: Fri, 03 Oct 2008
 
add a note add a note User Contributed Notes
mssql_bind
Anonymous
09-Jun-2008 02:52
for type :

SQLCHAR     DBCHAR
SQLVARCHAR     DBCHAR
SQLTEXT     DBCHAR
SQLBINARY     DBBINARY
SQLVARBINARY     DBBINARY
SQLIMAGE     DBBINARY
SQLINT1     DBTINYINT
SQLINT2     DBSMALLINT
SQLINT4     DBINT
SQLFLT4     DBFLT4
SQLFLT8     DBFLT8
SQLBIT     DBBIT
SQLMONEY4     DBMONEY4
SQLMONEY     DBMONEY
SQLDATETIM4     DBDATETIM4
SQLDATETIME     DBDATETIME
SQLDECIMAL     DBDECIMAL
SQLNUMERIC     DBNUMERIC

source : http://msdn.microsoft.com/en-us/library/aa937008(SQL.80).aspx
daryl dot mitchell at usask dot ca
06-Dec-2007 02:56
I had the same problem but the posted solution above just produced null results.  Here's a modification that ended up working:

#THIS SUCCEEDS, USES A REFERENCE
mssql_bind($proc, '@'.$key, $sp_parms[$key], SQLVARCHAR)
or die("Unable to bind $sp_name:$key<br>".mssql_get_last_message());
fheald at buzztime dot com
07-Aug-2007 04:27
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<br>".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<br>".mssql_get_last_message());
}

mssql_close> <Mssql 関数
Last updated: Fri, 03 Oct 2008
 
 
show source | credits | sitemap | contact | advertising | mirror sites