Function.oci-bind-by-name

Aus PHP-Wiki

Wechseln zu: Navigation, Suche
Anbieterwechsel Handy und Fragen & Antworten: TarifserviceKreditkarten Vergleichen Online - Kostenloser Kreditkartenvergleich . Typklassen

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.

Persönliche Werkzeuge