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-Funktionen
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_bindFügt einer Stored Procedure oder einer Remote Stored Procedure einen Parameter hinzu

Beschreibung

bool mssql_bind ( resource $Anweisungskennung , string $Param_Name , mixed &$Var , int $Typ [, int $ist_output [, int $ist_null [, int $maxLänge ]]] )

Fügt einer Stored Procedure oder einer Remote Stored Procedure einen Parameter hinzu.

Parameter-Liste

Anweisungskennung

Der mittels mssql_init() erhaltene Bezeichner der Anweisung

Param_Name

Der Name des Parameters als Zeichenkette

Hinweis: Sie müssen Sie das Zeichen @ der Syntax von T-SQL entsprechend einfügen. Eine Erklärung finden Sie bei mssql_execute().

Var

Die PHP-Variable, an die Sie den MS SQL-Parameter binden. Sie können sie als Wert übergeben oder als Referenz, um die OUTPUT- und RETVAL-Werte nach der Ausführung der Prozedur abzurufen.

Typ

Mögliche Werte: SQLTEXT, SQLVARCHAR, SQLCHAR, SQLINT1, SQLINT2, SQLINT4, SQLBIT, SQLFLT4, SQLFLT8, SQLFLTN.

ist_output

Ob der Parameter ein OUTPUT-Parameter ist oder nicht. Falls er ein OUTPUT-Parameter ist uns Sie das nicht angeben, wird er wie ein normaler Eingabeparameter behandelt und es wird keine Fehlermeldung ausgegeben.

ist_null

Ob der Parameter NULL ist oder nicht. Es genügt nicht, den Wert NULL als Var zu übergeben.

maxLänge

Wird bei char/varchar-Werten verwendet. Sie müssen die Länge der Daten angeben. Falls der Parameter vom Typ varchar(50) ist, muss also der Typ SQLVARCHAR und dieser Wert 50 sein.

Rückgabewerte

Gibt bei Erfolg TRUE zurück, im Fehlerfall FALSE.

Beispiele

Beispiel #1 mssql_bind()-Beispiel

<?php

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

$sp mssql_init("WDumpAdd"); // Name der Stored Procedure

mssql_bind($sp"@produktname"stripslashes($neuesprodukt), SQLVARCHARfalsefalse150);
mssql_bind($sp"@anzahl"stripslashes($neueanzahl), SQLVARCHARfalsefalse50);

mssql_execute($sp);
mssql_close($verbindung);

?>



mssql_close> <Mssql-Funktionen
Last updated: Fri, 03 Oct 2008
 
add a note add a note User Contributed Notes
mssql_bind
Anonymous
08-Jun-2008 10: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
05-Dec-2007 09: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
06-Aug-2007 12: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-Funktionen
Last updated: Fri, 03 Oct 2008
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites