✅ WEB- und WordPress-Nachrichten, Themen, Plugins. Hier teilen wir Tipps und beste Website-Lösungen.

Verwenden von sprintf und LIKE in SQL-Abfragen in WordPress

23

Wenn Sie mit Abfragen in WordPress arbeiten, ist es immer am besten, die Abfrage vorzubereiten, bevor Sie sie ausführen. Wenn Sie jedoch eine Schnittstelle mit einer Drittanbieter-API haben oder mit einer anderen Variante von SQL (wie Transact-SQL) arbeiten, funktionieren die Dinge möglicherweise etwas anders.

Wenn nur Datenbanken wirklich so ordentlich wären.

Die TL;DR von all dem ist, dass die Handhabung von sprintf und LIKE in T-SQL eine gewisse strategische Handhabung erfordert. Und das Codebeispiel im nächsten Abschnitt sollte alles bieten, was Sie brauchen.

sprintf und LIKE in SQL

Einige Hintergrundinformationen zum vorliegenden Problem:

Angenommen, Sie arbeiten an einem Projekt, in dem Sie eine API eines Drittanbieters aufrufen und die besagte API T-SQL als Schnittstelle zu ihrer Datenbank verwendet.

Nehmen wir weiter an, dass Sie Datensätze abrufen möchten, die ein Segment der abzufragenden Zeichenfolge enthalten (Sie wissen schon, eine LIKE -Klausel). Der Vorbehalt ist, dass Sie die von WordPress bereitgestellte Standardvorbereitungsfunktion nicht verwenden können, also entscheiden Sie sich für die Verwendung von sprintf, um die eingehenden Informationen zu bereinigen.

Da sprintf Strings verwendet %sund Sie eine LIKE – Klausel verwenden, die auch erfordert %, wie geht man mit dem Fall um, dass beide verwendet werden?

Hier ist ein Beispiel dafür, wie es für Sie funktionieren könnte:

<?php
/**
 * Queries a third-party API using sprintf and a LIKE clause to retrieve the users 
 * with a last name like the specified argument.
 * 
 * @param string $lastName An unsanitized version of the user's last name.
 */
public function getUserByLastName(string $lastName)
{
    // Sanitize the argument as you see fit here.

    $query = sprintf("
        SELECT FIRST_NAME, LAST_NAME
        FROM USERINFO
        WHERE LAST_NAME LIKE '%%%s%%'
    ", $lastName);

    // Make a query to the third-party API here.
}

Natürlich denke ich immer noch daran, das $nameArgument irgendwie zu umgehen, aber es gibt eine Reihe verschiedener Möglichkeiten, dies zu tun, und das geht über den Sinn dieses Beitrags hinaus.

Kurz gesagt, Präfix und Suffix %smit %%und Sie sollten loslegen können.

Aufnahmequelle: tommcfarlin.com

Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern. Wir gehen davon aus, dass Sie damit einverstanden sind, Sie können sich jedoch abmelden, wenn Sie möchten. Annehmen Weiterlesen