2016-07-21 7 views
0

Ich möchte eine Zeile Ad als boolean auswählen, die streng wahr ist. Ich verwende die folgende SQL-Anweisung.sql - Wählen Sie boolean strikt wahr

Die obige Aussage wählt jedoch Ad als 1 und nicht wahr, aufgrund dessen die folgende Bedingung nicht erfüllt. ===. Das Ändern des folgenden Codes ist keine Option.

if($row["Ad"] === true){ 
           echo("<h1>You are the admin</h1>"); 
         } 
+0

ich Ihre * Ändern Sie den Code unten akzeptiert haben, ist kein Option * edit (keine Ahnung, warum das System es nicht erlaubt). Wenn das eine Einschränkung ist, gibt es einfach keine Möglichkeit, dies zu tun. –

Antwort

0

In der Boolean Literals Seite von der MySQL-Dokumentation können wir die TRUE lesen ist nur alias für integer 1:

Die Konstanten TRUE und FALSE auswerten zu 1 bzw. 0. Die Konstantennamen können in einem beliebigen Großbuchstaben geschrieben werden.

mysql> SELECT TRUE, true, FALSE, false; 
     -> 1, 1, 0, 0 

So müssen Sie möglicherweise, dies zu tun:

if($row["Ad"] === 1){ 

Es ist jedoch erwähnenswert ist, dass einige Datenbankerweiterung und Treiberkombinationen Zahlen als Strings abrufen können. Sie können mit den tatsächlichen Werten prüfen:

var_dump($row); 

Aber ich denke, das ist eine jener Situationen, in denen lose Arten praktisch und strenge Vergleich kommen, ist nicht notwendig:

if($row["Ad"] == 1){ 
1

MySQL nicht wirklich haben einen boolean Typ. Stattdessen repräsentiert es true als 1 und false als 0, und es verwendet den Typ TINYINT für diesen Zweck.

SELECT 
    'user' AS username, 
    'pass' AS password, 
    'true' AS Ad 
FROM users 
LIMIT 1 

und dann:

Wenn Sie true zurückkehren möchten, müssen Sie einen Textwert verwenden, um

if($row["Ad"] === "true") {