Heim >Backend-Entwicklung >PHP-Tutorial >Können mit PHP PDO vorbereitete Anweisungen Parameter für Tabellen- oder Spaltennamen verwenden?

Können mit PHP PDO vorbereitete Anweisungen Parameter für Tabellen- oder Spaltennamen verwenden?

DDD
DDDOriginal
2025-01-03 07:33:40485Durchsuche

Can PHP PDO Prepared Statements Use Parameters for Table or Column Names?

Können Parameter Tabellen- oder Spaltennamen in PHP-PDO-Anweisungen ersetzen?

Es ist nicht möglich, Tabellennamen als Parameter an vorbereitete PDO-Anweisungen zu übergeben. Betrachten Sie den folgenden Code, der dies versucht:

$stmt = $dbh->prepare('SELECT * FROM :table WHERE 1');
if ($stmt->execute(array(':table' => 'users'))) {
    var_dump($stmt->fetchAll());
}

Dieser Ansatz führt zu einem Fehler, da Tabellen- und Spaltennamen nicht durch Parameter ersetzt werden können.

Sicheres Einfügen von Tabellennamen in SQL-Abfragen

Um Tabellennamen sicher in SQL-Abfragen einzufügen, ist ein alternativer Ansatz erforderlich. Vermeiden Sie es, Benutzereingaben direkt in die Abfrage einzugeben, wie zum Beispiel:

$sql = "SELECT * FROM $table WHERE 1"

Erwägen Sie stattdessen, die Eingaben zu filtern und zu bereinigen. Eine Methode besteht darin, Kurzparameter an eine Funktion zu übergeben, die die Abfrage dynamisch ausführt. Anschließend kann eine switch()-Anweisung verwendet werden, um gültige Tabellennamen auf die Whitelist zu setzen. Zum Beispiel:

function buildQuery( $get_var ) 
{
    switch($get_var)
    {
        case 1:
            $tbl = 'users';
            break;
    }

    $sql = "SELECT * FROM $tbl";
}

Indem Sie einen Standardfall weglassen oder einen verwenden, der eine Fehlermeldung anzeigt, stellen Sie sicher, dass nur gewünschte Werte verwendet werden.

Das obige ist der detaillierte Inhalt vonKönnen mit PHP PDO vorbereitete Anweisungen Parameter für Tabellen- oder Spaltennamen verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:PHP-OOP-TeilpolymorphismusNächster Artikel:PHP-OOP-Teilpolymorphismus