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
mssql_bind
(PHP 4 >= 4.0.7, PHP 5, PECL odbtp:1.1.1-1.1.4)
mssql_bind — Fügt einer Stored Procedure oder einer Remote Stored Procedure einen Parameter hinzu
Beschreibung
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), SQLVARCHAR, false, false, 150);
mssql_bind($sp, "@anzahl", stripslashes($neueanzahl), SQLVARCHAR, false, false, 50);
mssql_execute($sp);
mssql_close($verbindung);
?>
mssql_bind
08-Jun-2008 10:52
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());
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());
}
