PHP:在MYSQL数据库中使用布尔变量进行逻辑的语法

时间:2012-03-13 21:35:13

标签: php mysql boolean

有问题的php / mysql noob。 MYSQL似乎没有一种存储布尔值的首选方法。我决定和Tiny(int)一起在留言板上的某个人的建议中说这相当于True / False。我认为True = 1和False = 0 ...也许这假设很多...无论如何在mysql dbase中放置1个值进行测试。他们在phpAdmin中显示为“1”,这是值得的。

我想检索这些值,如果TRUE显示图片,如果为false,则不显示。因此,在与dbase连接并运行成功查询后,返回其他文本值时,我写了......

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

或者代替TRUE,我试过1,'1'“1”'TRUE'等。

如果我只是回显$ row('email'),我得到1.但是,上面的逻辑不起作用。条件永远不会意味着图像永远不会显示。我尝试用它来扭转它!=但仍然无法使它工作。根据我的阅读,MYSQL中的布尔值可能有点不稳定,但这看起来非常基本。

请注意。使用上面的代码,没有错误。它永远不会将括号中的语句评估为true来执行条件。可能是语法错误???或者我错过了什么。

感谢您的任何建议!

3 个答案:

答案 0 :(得分:2)

如果我理解你的使用

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

答案 1 :(得分:2)

  

我决定选择Tiny(int)

这正是全世界数百万人所做的。

  

我认为True = 1且False = 0

这就是你应该如何解释它。

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

不起作用

这应该绝对有效,可以通过以下方式进行测试:

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

仔细检查$ row的内容,即var_dump($row),以确保从数据库中正确收集数据。检查从数据库返回的任何错误。还要将PHP放在脚本顶部,检查PHP返回的错误:

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

答案 2 :(得分:1)

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

即,“isDeleted”的值可以是1/0或枚举,“是/否”甚至更好:“实时/已删除”。

所有三个都描述了相同的状态,但是最后一个例子更重要的是打击了你。

只有并发症正在输入它,但是,无论如何,布尔值都是HTML的祸根。 MySql查询保存是相当明智的:

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