web-dev-qa-db-de.com

Soll ich wpdb vorbereiten?

Ich bin neu in SQL und frage mich, ob ich für die folgende Abfrage einer von mir erstellten Tabelle wpdb->prepare verwenden muss

global $wpdb;
$tablename = $wpdb->prefix . "my_custom_table";
$sql = "SELECT * FROM " . $tablename . " ORDER BY date_created DESC";
$resulst = $wpdb->get_results( $sql , ARRAY_A );

Muss ich hier prepare verwenden? Wie würde ich das machen?

Prost

23
Richard Sweeney

Es wird empfohlen, immer prepare zu verwenden. Die Hauptverwendung besteht jedoch darin, SQL-Injection-Angriffe zu verhindern. Da Benutzer/Besucher keine Eingaben machen oder die Abfrage nicht beeinflussen können, ist dies in Ihrem aktuellen Beispiel kein Problem .

Aber wie ich bereits sagte, ist es eine bewährte Methode, sie zu verwenden. Sobald Sie sie verwenden, hören Sie nie auf. In Ihrem Beispiel können Sie sie also folgendermaßen verwenden:

global $wpdb;
$tablename = $wpdb->prefix . "my_custom_table";
$sql = $wpdb->prepare( "SELECT * FROM %s ORDER BY date_created DESC",$tablename );
$results = $wpdb->get_results( $sql , ARRAY_A );

um mehr darüber zu erfahren, wie man es benutzt, gehe zu dem Kodex

27
Bainternet

Wenn Sie prepare verwenden, wird der Code vor SQL-Injection-Schwachstellen geschützt.

Hier ist der Code, den Sie für die Verwendung von prepare() ändern müssen.

global $wpdb;
$tablename = $wpdb->prefix . "my_custom_table";
$sql = $wpdb->prepare( "SELECT * FROM {$tablename} ORDER BY date_created DESC");
$resulst = $wpdb->get_results( $sql , ARRAY_A );
0
softnwords