WPDB - wie% - Platzhalter vorbereiten?


9

Sind diese {xxx...}Platzhalter %in einer LIKE-Anweisung normal? Wenn ja, wann werden sie wieder in %'s konvertiert ?

SHELL
wp> global $wpdb;
wp> $q = "%s";
=> string(2) "%s"
wp> $pq = $wpdb->prepare($q, '%hi%');
=> string(136) "'{6e039dc0b074a5ff6828a070d0c24708d132341f32dff55a053f1410beabaacd}hi{6e039dc0b074a5ff6828a070d0c24708d132341f32dff55a053f1410beabaacd}'"

Antworten:


12

Ja, sie sind normal. Sie wurden in 4.8.3 hinzugefügt, um eine SQL-Injection-Schwachstelle zu beheben.

Einen Artikel, der die technischen Gründe dafür beschreibt , und das Ticket für die Änderung finden Sie hier .

Die Platzhalterzeichen werden durch die zufälligen Zeichen in der letzten Zeile $wpdb->prepare()der $wpdb->add_placeholder_escape()Funktion ersetzt, die $wpdb->placeholder_escape()intern aufgerufen wird.

Diese Platzhalter werden $wpdb->query()durch die $wpdb->remove_placeholder_escape()Funktion entfernt, die dem queryHook als Filter hinzugefügt wird .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.