PHP 8.0.6 Released!

Vordefinierte Konstanten

Folgende Konstanten werden von dieser Erweiterung definiert und stehen nur zur Verfügung, wenn die Erweiterung entweder statisch in PHP kompiliert oder dynamisch zur Laufzeit geladen wurde.

Warnung

PDO nutzt seit PHP 5.1 Klassen-Konstanten. Frühere Versionen nutzen globale Konstanten in der Form PDO_PARAM_BOOL.

PDO::PARAM_BOOL (int)
Stellt den Datentyp Boolean dar.
PDO::PARAM_NULL (int)
Stellt den Datentyp SQL-NULL dar.
PDO::PARAM_INT (int)
Stellt den Datentyp SQL-INTEGER dar.
PDO::PARAM_STR (int)
Stellt SQL-CHAR, VARCHAR und andere String-Datentypen dar.
PDO::PARAM_STR_NATL (int)
Ein Flag, das angibt, dass eine Zeichenkette den nationalen Zeichensatz verwendet. Verfügbar seit PHP 7.2.0.
PDO::PARAM_STR_CHAR (int)
Ein Flag, das angibt, dass eine Zeichenkette den regulären Zeichensatz verwendet. Verfügbar seit PHP 7.2.0.
PDO::PARAM_LOB (int)
Stellt den SQL-Datentyp LOB (large object) dar.
PDO::PARAM_STMT (int)
Stellt einen Datensatztyp dar. Wird derzeit von keinem Treiber unterstützt.
PDO::PARAM_INPUT_OUTPUT (int)
Legt fest, dass der Parameter ein INOUT-Parameter für eine Stored Procedure sein muss. Auf den Wert muss ein bitweises OR mit einem eindeutigen PDO::PARAM_*-Parameter ausgeführt werden.
PDO::FETCH_LAZY (int)
Legt fest, dass die Methode zum Abrufen von Daten jede Zeile als eigenständiges Objekt mit variablem Namen zurückgeben soll, welcher gleichlautend mit den Spaltennamen in der Ergebnismenge ist. PDO::FETCH_LAZY erstellt die variablen Objektnamen, sobald auf diese zugegriffen wird. Ungültig innerhalb von PDOStatement::fetchAll().
PDO::FETCH_ASSOC (int)
Legt fest, dass die Methode zum Abrufen von Daten jede Zeile in einem assoziativen Array zurückgibt, das mit den Spaltennamen aus der Ergebnismenge indiziert wird. Wenn die Ergebnismenge mehrere gleichlautende Spaltennamen enthält, gibt PDO::FETCH_ASSOC nur einen Wert pro Spaltenname zurück.
PDO::FETCH_NAMED (int)
Legt fest, dass die Methode zum Abrufen von Daten jede Zeile als ein Array mit dem Index des Spaltennamens der entsprechenden Ergebnismenge zurückgeben soll. Wenn die Ergebnismenge mehrere Spalten mit dem gleichen Namen besitzt, gibt PDO::FETCH_NAMED ein Array von Werten pro Spaltenname zurück.
PDO::FETCH_NUM (int)
Legt fest, dass die Methode zum Abrufen von Daten jede Zeile als Array zurückgeben soll, indiziert durch die Spaltennummer, wie sie in der entsprechenden Ergebnismenge zurückgegeben wird, beginnend bei Spalte 0.
PDO::FETCH_BOTH (int)
Legt fest, dass die Methode zum Abrufen von Daten jede Zeile als Array zurückgeben soll, das durch den Spaltennamen und die Spaltennummer indiziert ist, wie sie in der entsprechenden Ergebnismenge zurückgegeben werden, beginnend bei Spalte 0.
PDO::FETCH_OBJ (int)
Legt fest, dass die Methode zum Abrufen von Daten jede Zeile als ein Objekt mit Eigenschaftsnamen zurückgeben soll, die den in der Ergebnismenge zurückgegebenen Spaltennamen entsprechen.
PDO::FETCH_BOUND (int)
Legt fest, dass die Methode zum Abrufen von Daten TRUE zurückgeben soll und die Werte der Spalten in der Ergebnismenge den PHP-Variablen zuweist, an die sie mit der Methode PDOStatement::bindParam() oder der Methode PDOStatement::bindColumn() gebunden wurden.
PDO::FETCH_COLUMN (int)
Legt fest, dass die Methode zum Abrufen von Daten nur eine einzige angeforderte Spalte aus der nächsten Zeile in der Ergebnismenge zurückgeben soll.
PDO::FETCH_CLASS (int)
Legt fest, dass die Methode zum Abrufen von Daten eine neue Instanz der angeforderten Klasse zurückgeben soll, die die Spalten den benannten Eigenschaften der Klasse zuordnet.

Hinweis: Die magische __set()-Methode wird aufgerufen, wenn die Eigenschaft in der angeforderten Klasse nicht vorhanden ist

PDO::FETCH_INTO (int)
Legt fest, dass die Methode zum Abrufen von Daten eine vorhandene Instanz der angeforderten Klasse aktualisieren soll, indem die Spalten den benannten Eigenschaften der Klasse zugeordnet werden.
PDO::FETCH_FUNC (int)
Ermöglicht die ad-hoc Anpassung der Daten (nur gültig innerhalb von PDOStatement::fetchAll()).
PDO::FETCH_GROUP (int)
Gruppiert die Rückgabe nach den Werten. Üblicherweise in Verbindung mit PDO::FETCH_COLUMN oder PDO::FETCH_KEY_PAIR.
PDO::FETCH_UNIQUE (int)
Ruft nur eindeutige Werte abrufen.
PDO::FETCH_KEY_PAIR (int)
Liefert das Ergebnis von zwei Spalten als Array. Der Inhalt der ersten Spalte ist der Schlüssel und der Inhalt der zweiten Spalte ist der Wert.
PDO::FETCH_CLASSTYPE (int)
Ermittelt den Klassennamen aus dem Wert der ersten Spalte.
PDO::FETCH_SERIALIZE (int)
Ähnlich wie PDO::FETCH_INTO, liefert aber das Objekt als serialisierte Zeichenkette. Der Konstruktor wird nicht aufgerufen, wenn dieses Flag gesetzt ist.
PDO::FETCH_PROPS_LATE (int)
Ruft den Konstrutor auf, bevor die Eigenschaften gesetzt werden.
PDO::ATTR_AUTOCOMMIT (int)
Wenn dieser Wert false ist, versucht PDO, Autocommit zu deaktivieren, damit die Verbindung eine Transaktion starten kann.
PDO::ATTR_PREFETCH (int)
Durch Ändern der Prefetch-Puffergröße können Sie die Balance zwischen Speicherverbrauch und Datenbankgeschwindigkeit einstellen. Nicht alle Datenbank/Treiber-Kombinationen unterstützen die Größenänderung dieses Puffers. Je größer der Puffer ist, desto höher ist die Leistung, aber auch der Speicherverbrauch.
PDO::ATTR_TIMEOUT (int)
Legt den Timeout-Wert für die Kommunikation mit der Datenbank in Sekunden fest.
PDO::ATTR_ERRMODE (int)
Informationen zu diesem Attribut finden Sie im Abschnitt Fehler und Fehlerbehandlung.
PDO::ATTR_SERVER_VERSION (int)
Dieses Attribut ist schreibgeschützt; es gibt Informationen über die Version des Datenbankservers zurück, mit dem PDO verbunden ist.
PDO::ATTR_CLIENT_VERSION (int)
Dieses Attribut ist schreibgeschützt; es gibt Informationen über die Versionen der Client-Bibliotheken zurück, die der PDO-Treiber verwendet.
PDO::ATTR_SERVER_INFO (int)
Dieses Attribut ist schreibgeschützt; es gibt einige Metainformationen über den Datenbankserver zurück, mit dem PDO verbunden ist.
PDO::ATTR_CONNECTION_STATUS (int)
PDO::ATTR_CASE (int)
Erzwingt die Zuordnung von Spaltennamen zur Groß- oder Kleinschreibung, die durch die PDO::CASE_*-Konstanten festgelegt wird.
PDO::ATTR_CURSOR_NAME (int)
Liefert oder setzt den Namen, der für einen Cursor verwendet werden soll. Am nützlichsten bei der Verwendung von scrollbaren Cursorn und positionierten Aktualisierungen.
PDO::ATTR_CURSOR (int)
Wählt den Cursortyp aus. PDO unterstützt derzeit entweder PDO::CURSOR_FWDONLY oder PDO::CURSOR_SCROLL. Bleiben Sie bei PDO::CURSOR_FWDONLY, es sei denn, Sie wissen, dass Sie einen scrollbaren Cursor benötigen.
PDO::ATTR_DRIVER_NAME (string)
Gibt den Namen des Treibers zurück.

Beispiel #1 Die Verwendung von PDO::ATTR_DRIVER_NAME

<?php
if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql') {
  echo 
"Läuft auf MySQL; macht hier etwas MySQL-spezifisches\n";
}
?>

PDO::ATTR_ORACLE_NULLS (int)
Konvertiert leere Zeichenketten bei Datenabfragen in SQL-NULL-Werte.
PDO::ATTR_PERSISTENT (mixed)
Fordert eine persistente Verbindung an, anstatt eine neue Verbindung zu erstellen. Weitere Informationen zu diesem Attribut finden Sie im Abschnitt Verbindungen und Verbindungsmanagement.
PDO::ATTR_STATEMENT_CLASS (int)
Legt den Name der Klasse fest, die als Statement zurückgegeben wird.
PDO::ATTR_FETCH_CATALOG_NAMES (int)
Stellt jedem Spaltennamen, der in der Ergebnismenge zurückgegeben wird, den Namen des enthaltenden Katalogs voran. Der Katalogname und der Spaltenname werden durch einen Punkt (.) getrennt. Die Unterstützung dieses Attributs liegt auf der Treiberebene; es kann sein, dass es von Ihrem Treiber nicht unterstützt wird.
PDO::ATTR_FETCH_TABLE_NAMES (int)
Stellt jedem Spaltennamen, der in der Ergebnismenge zurückgegeben wird, den Namen der enthaltenden Tabelle voran. Der Tabellenname und der Spaltenname werden durch einen Punkt (.) getrennt. Die Unterstützung dieses Attributs liegt auf der Treiberebene; es kann sein, dass es von Ihrem Treiber nicht unterstützt wird.
PDO::ATTR_STRINGIFY_FETCHES (int)
Erzwingt, dass alle Werte als Zeichenkette abgerufen werden.
PDO::ATTR_MAX_COLUMN_LEN (int)
Legt die maximale Länge der Spaltennamen fest.
PDO::ATTR_DEFAULT_FETCH_MODE (int)
PDO::ATTR_EMULATE_PREPARES (int)
PDO::ATTR_DEFAULT_STR_PARAM (int)
Legt den Standard-Zeichenketten-Parametertypen fest; entweder PDO::PARAM_STR_NATL oder PDO::PARAM_STR_CHAR. Verfügbar seit PHP 7.2.0.
PDO::ERRMODE_SILENT (int)
Löst keinen Fehler und keine Ausnahme aus, wenn ein Fehler auftritt. Es wird erwartet, dass der Entwickler explizit auf Fehler prüft. Dies ist der Standardmodus. Weitere Informationen zu diesem Attribut finden Sie im Abschnitt Fehler und Fehlerbehandlung.
PDO::ERRMODE_WARNING (int)
Gibt eine PHP-E_WARNING-Meldung aus, wenn ein Fehler auftritt. Weitere Informationen zu diesem Attribut finden Sie im Abschnitt Fehler und Fehlerbehandlung.
PDO::ERRMODE_EXCEPTION (int)
Löst eine PDOException aus, wenn ein Fehler auftritt. Weitere Informationen zu diesem Attribut finden Sie im Abschnitt Fehler und Fehlerbehandlung.
PDO::CASE_NATURAL (int)
Belässt die Spaltennamen so, wie sie vom Datenbanktreiber zurückgegeben werden.
PDO::CASE_LOWER (int)
Erzwingt die Kleinschreibung von Spaltennamen.
PDO::CASE_UPPER (int)
Erzwingt die Großschreibung von Spaltennamen.
PDO::NULL_NATURAL (int)
PDO::NULL_EMPTY_STRING (int)
PDO::NULL_TO_STRING (int)
PDO::FETCH_ORI_NEXT (int)
Liefert die nächste Zeile aus der Ergebnismenge. Gilt nur für scrollbare Cursor.
PDO::FETCH_ORI_PRIOR (int)
Liefert die vorherige Zeile aus der Ergebnismenge. Gilt nur für scrollbare Cursor.
PDO::FETCH_ORI_FIRST (int)
Liefert die erste Zeile aus der Ergebnismenge. Gilt nur für scrollbare Cursor.
PDO::FETCH_ORI_LAST (int)
Liefert die vorherige Zeile aus der Ergebnismenge. Gilt nur für scrollbare Cursor.
PDO::FETCH_ORI_ABS (int)
Liefert die angeforderte Zeile anhand der Zeilennummer aus der Ergebnismenge. Gilt nur für scrollbare Cursor.
PDO::FETCH_ORI_REL (int)
Liefert die angeforderte Zeile an einer Position relativ zur aktuellen Position des Cursors aus der Ergebnismenge. Gilt nur für scrollbare Cursor.
PDO::CURSOR_FWDONLY (int)
Erzeugt ein PDOStatement-Objekt mit einem Nur-Vorwärts-Cursor. Dies ist die Standard-Cursor-Wahl, da es das schnellste und häufigste Datenzugriffsmuster in PHP ist.
PDO::CURSOR_SCROLL (int)
Erzeugt ein PDOStatement-Objekt mit einem scrollbaren Cursor. Übergeben Sie die Konstante PDO::FETCH_ORI_*, um die aus der Ergebnismenge abgerufenen Zeilen zu steuern.
PDO::ERR_NONE (string)
Entspricht dem SQLSTATE '00000', d. h. die SQL-Anweisung wurde erfolgreich und ohne Fehler oder Warnungen ausgegeben. Diese Konstante ist für die Unterstützung bei der Überprüfung von PDO::errorCode() oder PDOStatement::errorCode(), um festzustellen, ob ein Fehler aufgetreten ist. Normalerweise wissen Sie sowieso, ob dies der Fall ist, indem Sie den Rückgabewert der Methode untersuchen, die die Fehlerbedingung ausgelöst hat.
PDO::PARAM_EVT_ALLOC (int)
Ein Zuweisungsereignis (Allocation).
PDO::PARAM_EVT_FREE (int)
Ein Freigabe-Ereignis (Deallocation).
PDO::PARAM_EVT_EXEC_PRE (int)
Löst ein Ereignis vor der Ausführung einer vorbereiteten Anweisung aus.
PDO::PARAM_EVT_EXEC_POST (int)
Löst ein Ereignis nach der Ausführung einer vorbereiteten Anweisung aus.
PDO::PARAM_EVT_FETCH_PRE (int)
Löst ein Ereignis vor dem Abrufen eines Ergebnisses aus einer Ergebnismenge aus.
PDO::PARAM_EVT_FETCH_POST (int)
Löst ein Ereignis nach dem Abrufen eines Ergebnisses aus einer Ergebnismenge aus.
PDO::PARAM_EVT_NORMALIZE (int)
Löst ein Ereignis während der Registrierung eines gebundenen Parameters aus, was es dem Treiber ermöglicht, den Parameternamen zu normalisieren.
PDO::SQLITE_DETERMINISTIC (int)
Signalisiert, dass eine Funktion die mit PDO::sqliteCreateFunction() erzeugt wurde, deterministisch ist, d. h. dass sie immer das selbe Ergebnis liefert, wenn sie innerhalb der selben SQL-Anweisung mit den gleichen Parametern aufgerufen wird. (Verfügbar seit PHP 7.1.4.)
add a note add a note

User Contributed Notes 6 notes

up
21
sam at xnet dot tk
8 years ago
It should be noted that PDO::FETCH_CLASS will call the constructor *after* setting the values (or calling __set).
up
3
todd at toddwiggins dot com dot au
1 year ago
Reference to all the PDO::MYSQL_* constants is available in MySQL's documentation for the driver here: https://dev.mysql.com/doc/connectors/en/apis-php-pdo-mysql.html

Such as the ones I was looking for PDO::MYSQL_ATTR_SSL_CA and PDO::MYSQL_ATTR_SSL_CAPATH which are not listed on this page.
up
1
kevin at kevinlocke dot name
1 year ago
PDO::PARAM_STR_CHAR and PDO::PARAM_STR_NATL must be combined with PDO::PARAM_STR using bitwise-OR for parameter binding.

These flags control value quoting (e.g. PDO::quote) and, in some situations (see below), parameter binding  (e.g. PDO::bindParam, PDO::bindValue) to prefix string literals with N'' as defined in SQL-92.  As of PHP 7.3, only dblib and mysql support these flags.  For the mysql driver, the flags only affect parameter binding when PDO::ATTR_EMULATE_PREPARES is true (the default).

MySQL and MariaDB interpret string literals prefixed with N as being utf8 (not utf8mb4) regardless of `SET NAMES` or the charset parameter.  This can cause problems if the database/table/column charset is not utf8.  For example, in a database using utf8mb4, the query "SELECT * FROM table WHERE col = :param" and bindValue(":param", "\u{1F600}", PDO::PARAM_STR | PDO::PARAM_STR_NATL) will cause "PDOException: SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='".  Using PDO::PARAM_STR without PDO::PARAM_STR_NATL and ensuring the charset DSN parameter is set correctly can avoid this issue.

See:
https://wiki.php.net/rfc/extended-string-types-for-pdo
https://mariadb.com/kb/en/library/string-literals/
https://dev.mysql.com/doc/refman/8.0/en/string-literals.html
up
2
Sbastien
6 months ago
PDO::FETCH_UNIQUE not only fetches the unique values, it also uses the first SQL column as array key result, what is very useful for create quickly an index, eg :

<?php

$sql
= <<<SQL
    SELECT ALL
        c1, -- For result indexing
        c1, c2
    FROM (
        VALUES
            ROW('ID-1', 'Value 1'),
            ROW('ID-2', 'Value 2a'),
            ROW('ID-2', 'Value 2b'),
            ROW('ID-3', 'Value 3')
    ) AS t (c1, c2);
    SQL;
$result = $pdo->query($sql);
print_r($result->fetchAll(PDO::FETCH_UNIQUE));

/*
Gives :
ID-1 => [c1 => ID-1,  c2 => Value 1]
ID-2 => [c1 => ID-2b, c2 => Value 2b]
ID-3 => [c1 => ID-3,  c2 => Value 3]
*/

?>
up
1
Oleg Andreyev
4 years ago
Default value for \PDO::ATTR_TIMEOUT is 30 seconds.
Ref.: https://github.com/php/php-src/blob/PHP-7.1.0/ext/pdo_mysql/mysql_driver.c#L600
up
-2
ko dot izawa at gmail dot com
4 years ago
When you use REAL type column on SQLite, your setting of pdo parameter of bindValue() is PDO::PARAM_STR.

'''
$stmt->bindValue(':elapse_time', $e_time, PDO::PARAM_STR);
'''
To Top