2012-03-13 87 views
2

php/mysql noob问题。 MYSQL似乎没有存储布尔值的首选方式。我根据留言板上的某个人的建议,决定与Tiny(int)一起使用,他们说这相当于True/False。我会认为True = 1和False = 0 ...也许这是假设...无论如何,将1个值放在mysql dbase中进行测试。他们在phpAdmin中显示为“1”,表示值得。PHP:在MYSQL数据库中使用布尔变量逻辑的语法

我想检索这些值,如果TRUE显示图片,如果为false,则不显示它。因此,与质数据库连接和运行,返回其他文本值细成功的查询后,我写了...

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

或者代替真的,我已经试过1,“1”“1”“TRUE”等

如果我只是echo $ row('email'),我得到1.但是,上述逻辑不起作用。这种情况绝不意味着图像永远不会显示。我试着用!=来转动它,但仍然无法使它工作。从我读过的内容来看,MYSQL中的布尔值可能有点片面,但这看起来很基本。

注意。使用上面的代码,没有错误。它从来没有评估括号中的陈述是正确的以执行条件。它可能是一个语法错误?或者我错过了什么。

感谢您的任何建议!

+0

var_dump($ row ['email'])''结果是什么? – webbiedave 2012-03-13 21:40:12

+0

在'if'之前加上'echo'。 – 2012-03-13 21:40:55

回答

2

如果我正确理解您的使用

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

我决定用微小(INT)去

这就是它的究竟是如何被世界各地数百万来完成。

我倒觉得真= 1,假= 0

这是你应如何解释它。

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

不起作用

这绝对应该工作,可以用简单的测试:

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

仔细检查$行的内容,即var_dump($row)保证数据正在从数据库中正确收集。检查从数据库返回的任何错误。此外,通过在你的脚本的顶部放置此检查由PHP返回的错误:

ini_set('display_errors', 1); 
error_reporting(E_ALL); 
+0

谢谢大家事实证明,这是我的一个愚蠢的错误,试图评估声明后,我已经关闭了错误的数据提取}。通过移动支架来修复它。 TRUE没有引号的作品。 – user1260310 2012-03-13 21:58:16

1

我用枚举,因为他们在某些情况下更具有可读性;特别是在处理旧桌子时。

也就是说,“isDeleted”可以具有1/0值或作为枚举,“是/否”或甚至更好:“活/删除”。

这三个描述的都是同一个状态,但最后一个例子会让你更加沉重。

唯一复杂的输入,但是,布尔值是所有的祸根是HTML反正。 MySql查询保存相当明智:

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