Wie konvertiere ich diese Vorbereitungsanweisung, um Platzhalter in WordPress $wpdb zu verwenden?

Lesezeit: 1 Minute

Ich habe eine perfekt funktionierende wpdb-Vorbereitungsanweisung vor WordPress 3.5. Das ist meine Zeile:

$post_id = $wpdb->get_var($wpdb->prepare( "SELECT a.post_id
        FROM $metatable AS a
        JOIN $metatable AS b ON a.post_id = b.post_id
        WHERE a.meta_value="$valuex1" AND b.meta_value="$valuex2""));

Jetzt mit WordPress 3.5 gibt dies eine Warnung zurück, da dies nicht vollständig bereinigt ist. Ich habe dies geändert, um Platzhalter zu verwenden, wie von WordPress empfohlen:

$post_id = $wpdb->get_var($wpdb->prepare("SELECT a.post_id FROM $metatable AS a JOIN $metatable AS b ON a.post_id = b.post_id WHERE a.meta_value =%d AND b.meta_value =%s",$valuex1,$valuex2));

Es ruft jedoch nicht mehr die korrekten Informationen aus der Datenbank ab. Stimmt etwas mit meiner geänderten Abfrage nicht? Wie kann ich es ändern, damit es wieder funktioniert?

Danke für Ihre Hilfe.

Meine Güte, das ist so einfach! WordPress verwendet zwei Platzhalter %s und %d.

%s sollte verwendet werden, wenn Zeichenketten an die Datenbank übergeben werden

während:

%d sollte für Ganzzahlen verwendet werden.

Mein Problem oben ist, dass ich sie verwechselt habe, ich verwende %d für Strings oder %s für Integer. Das Problem wird also gelöst, indem die richtigen Platzhalter für Ihren spezifischen Datentyp verwendet werden. Problem gelöst.

Wenn Sie beispielsweise die Datenbank mit id mit der PHP-Variablen $id abfragen, sollte der Platzhalter %d sein, da es sich um eine Ganzzahl handelt, andernfalls verwenden Sie für Zeichenfolgen wie Namen usw. %s.

1004360cookie-checkWie konvertiere ich diese Vorbereitungsanweisung, um Platzhalter in WordPress $wpdb zu verwenden?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy