So verwenden Sie ein Array als Abfragebedingung in PHP

PHPz
Freigeben: 2023-04-19 14:04:02
Original
796 Leute haben es durchsucht

In der PHP-Entwicklung ist es oft notwendig, Daten basierend auf einer Reihe von Bedingungen abzufragen. Dieser Satz von Bedingungen wird häufig in Form eines Arrays an das Programm übergeben und muss in einer SQL-Anweisung in Abfragebedingungen umgewandelt werden. In diesem Artikel wird erläutert, wie Arrays als Abfragebedingungen für Abfragen verwendet werden.

1. Hintergrund

In der tatsächlichen Entwicklung müssen wir häufig Daten in der Datenbank basierend auf unterschiedlichen Bedingungen abfragen. Diese Bedingungen können einfache Beziehungen wie „gleich“, „ungleich“, „größer als“, „kleiner als“ usw. umfassen, oder sie können komplexe logische Beziehungen wie „oder“, „und“, „nicht“ usw. umfassen. Um die Verarbeitung dieser Bedingungen zu erleichtern, kapseln wir sie normalerweise in ein Array, zum Beispiel:

$where = array(
    'id' => 1,
    'name' => 'Tom',
    'age' => array('gt', 18),
    'or' => array(
        'status' => 1,
        'score' => array('egt', 60)
    )
);
Nach dem Login kopieren

Im obigen Code stellt das $where-Array eine Abfragebedingung dar, die die fünf Bedingungen ID, Name, Alter usw. enthält. Status und Punktestand. Ihre Bedeutung ist wie folgt:

  • id=1
  • name='Tom'
  • age>18
  • (status=1 or score>=60)

Wir müssen dieses Array in eine Abfrage umwandeln SQL-Anweisung Bedingungen für die Ausführung von Datenbankabfragen.

2. Implementierung

In PHP können wir die String-Verkettung verwenden, um das Array in die Abfragebedingungen der SQL-Anweisung umzuwandeln. Es ist zu beachten, dass wir den Typ jedes Array-Elements bestimmen und unterschiedliche Bedingungen entsprechend den verschiedenen Typen verbinden müssen. Das Folgende ist eine einfache Implementierung:

function whereToStr($where) {
    $str = '';
    foreach ($where as $k=>$v) {
        if (is_array($v)) {
            if ($k == 'or') {
                $str .= '(' . whereToStr($v) . ') OR';
            } elseif ($k == 'and') {
                $str .= '(' . whereToStr($v) . ') AND';
            } else {
                $str .= $k . ' ' . $v[0] . ' ' . $v[1] . ' AND ';
            }
        } else {
            $str .= $k . ' = "' . $v . '" AND ';
        }
    }
    return rtrim($str, ' AND');
}
Nach dem Login kopieren

Diese Funktion durchläuft rekursiv alle Elemente im Array und generiert entsprechende Abfragebedingungen basierend auf dem Typ des Elements. Wenn das Element ein einfaches Schlüssel-Wert-Paar ist, wird die entsprechende Gleichheitsbedingung generiert. Wenn das Element ein Array ist, werden die Operatoren „oder“ und „und“ basierend auf dem Schlüsselnamen des Arrays generiert, oder es wird ein bedingter Ausdruck generiert generiert.

Gemäß der obigen Implementierung können wir das $where-Array in die folgenden Abfragebedingungen umwandeln:

id = “1” AND name = “Tom” AND age > “18” AND (status = “1” OR score >= “60”)
Nach dem Login kopieren

3. Die Verwendung von Arrays als Abfragebedingungen für Abfragen ist eine häufige Anforderung in der PHP-Entwicklung, und es ist auch eine weitere bequemer Weg. Wir können die Bedingungen in ein Array kapseln und dann die Abfragebedingungen durch einfache Zeichenfolgenverkettung konvertieren. Tatsächlich verfügen einige häufig verwendete PHP-Frameworks über integrierte Funktionen zur Kapselung und Konvertierung ähnlicher Abfragebedingungen, die das Schreiben von Code erheblich vereinfachen können.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie ein Array als Abfragebedingung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage