[sql] Die Rolle und die Vorteile der Verwendung von 1 = 1 und 0 = 1 in MySQL

Die Verwendung und Vorteile von wobei 1 = 1 und 0 = 1 in MySQL

Grundierung

Wenn Sie PHP verwenden, um MySQL zu betreiben, verwenden Sie häufig die Where-Anweisung zum Abfragen. Wenn die where-Anweisung nicht vorhanden ist, fügen Sie häufig ein where 1 = 1 hinten hinzu. Dies basiert auf dem Schreiben meines Kollegen. Lassen Sie uns die Vorteile von 1 = 1 analysieren!

Dabei ist 1 = 1; Diese Bedingung ist immer wahr. Bei einer unbestimmten Anzahl von Abfragebedingungen kann 1 = 1 die Anweisung leicht standardisieren.

1. Machen Sie sich keine Sorgen darüber, wo 1 = 1 in einer Abfrage mit mehreren Bedingungen ist

  Wenn Sie beispielsweise eine Abfrageseite erstellen und mehrere Optionen abgefragt werden können und der Benutzer gleichzeitig Abfrageschlüsselwörter auswählen und eingeben kann, lautet der Code gemäß der dynamischen Struktur der üblichen Abfrageanweisung ungefähr wie folgt:

string MySqlStr=”select * from table where”;

  if(Age.Text.Lenght>0)
  {
    MySqlStr=MySqlStr+“Age=“+“'Age.Text'“;
  }

  if(Address.Text.Lenght>0)
  {
    MySqlStr=MySqlStr+“and Address=“+“'Address.Text'“;
}

Die erste Hypothese
Wenn die beiden oben genannten IF-Beurteilungsanweisungen beide True sind, dh der Benutzer einen Abfragebegriff eingegeben hat, lautet die endgültige dynamische Konstruktionsanweisung MySqlStr:

MySqlStr=”select * from table where Age='18'  and Address='云南省文山州广南县小波吗村'”

Es ist ersichtlich, dass dies eine vollständige und korrekte SQL-Abfrageanweisung ist, die korrekt ausgeführt werden kann und Daten basierend darauf zurückgibt, ob Datensätze in der Datenbank vorhanden sind.

Die zweite Annahme
Wenn die beiden obigen IF-Beurteilungsaussagen nicht wahr sind, lautet die endgültige dynamische Konstruktionsanweisung MySqlStr:

MySqlStr=”select * from table where“

Schauen wir uns nun diese Anweisung an. Da die Bedingung nach dem Schlüsselwort where verwendet werden muss, diese Anweisung jedoch überhaupt keine Bedingung enthält, handelt es sich bei dieser Anweisung um eine fehlerhafte Anweisung, die nicht ausgeführt werden darf. Sie meldet nicht nur einen Fehler, sondern auch nicht Fragt alle Daten ab.

Die beiden obigen Annahmen stellen eine praktische Anwendung dar, die darauf hinweist, dass es Probleme bei der Konstruktion des Satzes gibt, die nicht ausreichen, um die flexiblen Abfragebedingungen zu bewältigen.

Zweitens die Vorteile der Verwendung von 1 = 1

Wenn wir die obige Aussage ändern in:

string MySqlStr=”select * from table where  1=1 ”;


  if(Age.Text.Lenght>0)
  {
    MySqlStr=MySqlStr+“and Age=“+“'Age.Text'“;
  }

  if(Address.Text.Lenght>0)
  {
    MySqlStr=MySqlStr+“and Address=“+“'Address.Text'“;
}

Nun gibt es auch zwei Annahmen

Die erste Annahme

Wenn beide IFs gelten, lautet die Anweisung:

MySqlStr=”select * from table where  1=1 and Age='18'  and Address='云南省文山州广南县小波吗村'”

Offensichtlich ist diese Anweisung eine korrekte Anweisung und kann korrekt ausgeführt werden. Wenn sich ein Datensatz in der Datenbank befindet, wird er definitiv abgefragt.

Die zweite Hypothese

Wenn keine der beiden IF gilt, lautet die Anweisung:

MySqlStr=”select * from table where 1=1”,

Schauen wir uns nun diese Anweisung an. Da 1 = 1 True ist, hat die Anweisung die richtige Syntax und kann korrekt ausgeführt werden. Ihre Funktion entspricht: MySqlStr = ”select * from table”, dh return Alle Daten in der Tabelle.

Die Implikation ist: Wenn der Benutzer keine Felder auswählt oder keine Schlüsselwörter auf der Abfrageseite mit mehreren Bedingungen eingibt, werden alle Daten in der Tabelle zurückgegeben. Wenn sich der Benutzer auf der Seite befindet, wählen Sie einige Felder aus und geben Sie einige ein Die Abfrage von Schlüsselwörtern erfolgt dann gemäß den vom Benutzer festgelegten Bedingungen.

Apropos, ich weiß nicht, ob Sie verstanden haben. Tatsächlich ist die Anwendung mit 1 = 1 keine erweiterte Anwendung oder eine sogenannte intelligente Struktur, nur um verschiedene unsichere Faktoren auf der Abfrageseite mit mehreren Bedingungen zu erfüllen Eine Methode zum Erstellen einer dynamischen SQL-Anweisung, die ordnungsgemäß ausgeführt werden kann.

Wenn 1 = 0 ist, ist diese Bedingung immer falsch. Das Ergebnis gibt keine Daten zurück. Nur die Tabellenstruktur kann zum schnellen Erstellen der Tabelle verwendet werden

"SELECT * FROM strName WHERE 1 = 0"; 

Die select-Anweisung wird hauptsächlich zum Lesen der Struktur der Tabelle verwendet, ohne die Daten in der Tabelle zu berücksichtigen, wodurch Speicherplatz gespart wird, da Sie die Ergebnismenge speichern können.

create table newtable as select * from oldtable where 1=0;  

Erstellen Sie eine neue Tabelle, und die Struktur der neuen Tabelle entspricht der Struktur der Abfragetabelle.

Ich denke du magst

Origin www.cnblogs.com/iiiiiher/p/12718792.html
Empfohlen
Rangfolge