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
Freigeben: 2025-01-03 07:33:40
Original
513 Leute haben es durchsucht

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());
}
Nach dem Login kopieren

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"
Nach dem Login kopieren

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";
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage