Function.oci-bind-by-name
Aus PHP-Wiki
oci_bind_by_name — Bindet eine PHP-Variable an einen Oracle Platzhalter
Inhaltsverzeichnis |
Beschreibung
bool oci_bind_by_name ( resource $statement , string $ph_name ,mixed &$variable [, int $maxlength [, int $type ]] )
Bindet die PHP-Variable variable
an den Oracle-Platzhalter
ph_name
. Ob dieser zur Ein- oder Ausgabe genutzt
wird, wird zur Laufzeit ermittelt und der benötigte Speicherplatz reserviert.
Parameter-Liste
- statement
- Ein OCI-Statement.
- ph_name
- Ein Platzhalter.
- variable
- Die PHP-Variable.
- maxlength
- Setzt die maximale Größe des Binds. Wenn dieser Wert auf -1 gesetzt wird, nimmt die Funktion die aktuelle Größe von variable und setzt diesen Wert als maximale Grösse.
- type
- Wenn ein abstrakter Datentyp wie (LOB/ROWID/BFILE) gebunden werden soll, muss zuerst oci_new_descriptor() verwendet werden. length gilt nicht für abstrakte Datentypen und sollte dann auf -1 gesetzt sein. type zeigt Oracle, welchen Typ wir binden wollen. Als Standardwert wird SQLT_CHR verwendet. Mögliche Typen sind: SQLT_FILE - für BFILEs (Binärdatei); SQLT_CFILE - für CFILEs (Textdatei); SQLT_CLOB - für CLOBs (Text-LOB); SQLT_BLOB - für BLOBs (Binär-LOB); SQLT_RDD - für ROWIDs; SQLT_NTY - für benamte Datentypen; SQLT_INT - für INTEGERs; SQLT_CHR - für VARCHARs; SQLT_BIN - für RAW-Spalten; SQLT_LNG - für LONG-Spalten; SQLT_LBI - für LONG-RAW-Spalten; SQLT_RSET - für Zeiger, die zuvor mit oci_new_cursor() generiert wurden.
Rückgabewerte
Gibt bei Erfolg TRUE zurück, im Fehlerfall FALSE.
Beispiele
=== #1 oci_bind_by_name() Beispiel
<?php /* oci_bind_by_name Beispiel thies at thieso dot net (980221) fügt 3 Datensätze in emp ein und benutzt ROWID, um die Datensätze direkt nach dem Einfügen zu ändern. */ $conn = oci_connect("scott", "tiger"); $stmt = oci_parse($conn, " INSERT INTO emp (empno, ename) VALUES (:empno,:ename) RETURNING ROWID INTO :rid "); $data = array( 1111 => "Larry", 2222 => "Bill", 3333 => "Jim" ); $rowid = oci_new_descriptor($conn, OCI_D_ROWID); oci_bind_by_name($stmt, ":empno", $empno, 32); oci_bind_by_name($stmt, ":ename", $ename, 32); oci_bind_by_name($stmt, ":rid", $rowid,=== Beispiel #2 oci_bind_by_name() Beispiel <source lang="php"> <?php $connection = oci_connect('apelsin','kanistra'); $query = "INSERT INTO test_table VALUES(:id, :text)"; $statement = oci_parse($query); oci_bind_by_name($statement, ":id", 1); oci_bind_by_name($statement, ":text", "Leerzeichen folgen "); oci_execute($statement); /* Dieser Code wird den String 'Leerzeichen folgen' ohne die nachfolgenden Leerzeichen in die DB einfügen. */ ?>
Beispiel #3 oci_bind_by_name() Beispiel
<?php $connection = oci_connect('apelsin','kanistra'); $query = "INSERT INTO test_table VALUES(:id, 'Leerzeichen folgen ')"; $statement = oci_parse($query); oci_bind_by_name($statement, ":id", 1); oci_execute($statement); /* Und dieser Code wird 'Leerzeichen folgen ' hinzufügen und dabei die Leerzeichen erhalten. */ ?>
Rückgabewerte
Gibt bei Erfolg TRUE zurück, im Fehlerfall FALSE.
Anmerkungen
Warnung
Benutze magic_quotes_gpc oder
addslashes() und oci_bind_by_name()
nicht gleichzeitig, da kein Escapen nötig ist und jedes magisch
durchgeführte Escapen in die Datenbank geschrieben wird.
oci_bind_by_name() kann die magisch hinzugefügte nicht
von den absichtlich hinzugefügten Quotierung unterscheiden.
Hinweis:
In der PHP-Versionen vor 5.0.0 muss man ocibindbyname()
benutzen. Den Namen kann man immer noch nutzen. Er wurde als Alias für
oci_bind_by_name() für die Abwärtskompatibilität
erhalten. Dieses ist allerdings veraltet und wird nicht empfohlen.