2012-03-13 6 views
2

質問のあるPHP/MySQLのnoob。 MYSQLはブール値を格納するのに好ましい方法を持っていないようです。私はTiny(int)と一緒に、メッセージボード上の誰かがTrue/Falseに等しいと言った提案に行くことにしました。私は、True = 1とFalse = 0 ...多分それを仮定していると思います...とにかく、テストのためにmysql dbaseに1つの値を入れます。彼らはそれが価値あるものであれば "1"としてphpAdminに現れました。PHP:ロジックのMYSQLデータベースでブール変数を使用するための構文

これらの値を取得したいのですが、TRUEなら画像を表示し、falseなら表示しません。だから、dBASEのと接続し、細かい他のテキスト値を返す成功したクエリを実行した後、私はまた

if ($row['email'] == TRUE) 
{ 
echo "<img src='images/email.png'>"; 
} 

がTRUEの代わりに、私は、1を試してみた「1」「1」「TRUE」等...書きました

$ row( 'email')をエコーすると、1になります。しかし、上記のロジックは機能しません。条件は意味を持たず、画像は決して表示されません。私はそれを回してみました!=しかし、まだそれを動作させることはできません。私が読んだことから、MYSQLのブール値はちょっと薄れているかもしれませんが、これはかなり基本的なようです。

注。上記のコードでは、エラーはありません。条件付きで実行するには、カッコ内のステートメントをtrueとして評価することは決してありません。それは構文エラーかもしれない???または私は何が欠けている。

ありがとうございました!

+0

'var_dump($ row ['email'])'の結果はどうなりますか? – webbiedave

+0

は、 'if'の前に' echo'を入れます。 –

答えて

2

私はあなたが

if($row['email'] == 1){ 
echo "<img src='your-path.jpg'></img>"; 
}else{ 
// do nothing if false 
} 
2

を使用して、正しく理解していれば、私は小型(int型)で行くことにしました

それは、世界中の何百万人によって行われます正確にどのようにだこと。

私はあなたがそれをどのように解釈すべきかであることは事実では= 1とFalse = 0

と思うだろう。ことを確認するために、すなわち、var_dump($row)

$row['email'] = '1'; 
echo $row['email'] == true; // output: 1 

ダブル$行の内容を確認してください。

if ($row['email'] == TRUE) 

は、これは絶対に動作するはずとして簡単にテストすることができ

動作しません。データはデータベースから適切に収集されています。データベースから返されたエラーを確認します。また、あなたのスクリプトの先頭にこれを配置することにより、PHPから返されたエラーをチェック:

彼らは、特定の状況でより読みやすくしているので、私は、列挙型を使用し
ini_set('display_errors', 1); 
error_reporting(E_ALL); 
+0

ありがとうございました。間違ってデータを取り込んでしまった後に、このステートメントを評価しようとしたのは、私の愚かなミスでした。ブレースを動かすことで修正しました。引用符なしでTRUEになります。 – user1260310

1

。特に古いテーブルを扱う場合は特にそうです。

「isDeleted」は1/0の値を持つことができます。また、「Yes/No」または「Live/Deleted」の列挙型として設定することもできます。

3つはすべて同じ状態を表しますが、最後の例では顔の中をより大きく殴打します。

入力するだけでは複雑ですが、ブーリアンはすべてのHTMLの邪魔です。保存のためのMySqlクエリはかなり賢明です:

mysql_query(sprintf(
    "update table set isDeleted='%s' where id=3", 
    ($myvalue === true ? 'Live' : 'Deleted') 
)); 
関連する問題