Ich bin neu in SQL und frage mich, ob ich wpdb->prepare
für die folgende Abfrage eine Tabelle verwenden muss, die ich erstellt habe
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 prepare
hier verwenden? Wie würde ich das machen?
Prost
plugin-development
mysql
wpdb
Richard Sweeney
quelle
quelle
$tablename = $wpdb->prefix . "my_custom_table"; $concert_id = 1; $sql = "SELECT * FROM " . $tablename . " WHERE concert_id = %d LIMIT 1;"; $prep_sql = $wpdb->prepare( $sql, $concert_id ); $get_concerts = $wpdb->get_results( $prep_sql , ARRAY_A );
Und es funktioniert großartig! Ich weiß nicht, warum das so ist. Aber ich verstehe es jetzt auf jeden Fall!SELECT * FROM `wp_my_custom_table`
. Sie können doppelte Anführungszeichen Unterstützung, ermöglichen aber dann müsste es so aussehen:SELECT * FROM "wp_my_custom_table"
.Wenn Sie prepare verwenden, wird der Code vor SQL-Injection-Schwachstellen geschützt.
Hier ist der Code, den Sie für die Verwendung ändern müssen
prepare()
.quelle
In Ihrem Fall ist kein SQL-Injection-Angriff möglich . Ihr Code benötigt keinen zusätzlichen Schutz, da Sie keine Benutzereingaben wie "Posten", "Abrufen", "Anfordern" oder "Cookie" verwenden.
Verwenden Sie keine komplizierten Funktionen, wenn dies nicht erforderlich ist, um Serverressourcen zu sparen.
quelle