在php和mysql中检查列值== TRUE

时间:2013-09-08 03:00:26

标签: php mysql if-statement

我正在尝试创建一个菜单,该菜单只会根据用户订阅的内容填充链接。基本上我将使用php来检查用户对一个包含他/她的电子邮件+以布尔格式注册的课程的表格,即:

email          | course 1 | course 2 | course 3|
john@email.com   TRUE       FALSE       TRUE

我想创建一个if语句,如果当然1 = true WHERE email = john@email.com则回显一些html

否则检查课程2等。

我遇到的问题是如何构建我的if语句?我会用

吗?
$sql="Select * FROM courses WHERE user = $user and course1 = TRUE"
$result = mysql_query($sql) or mysql_die($sql)
if($result)
{

echo html

}

还是有其他办法吗?有没有办法我可以编写一个if语句来检查多个值,例如if($ _ SESSION ['auth_id'] == 1)和if(course1 == TRUE)(我知道最后一个if语句不正确但是我'如果可能的话,我想把两者结合起来。我是否需要在if语句中将其写为if语句:

if ($something)
{
   if ($somethingelse)
    {
       do work
     }
}

或其他:

if ($something)
{
   elseif ($somethingelse)
    {
       do work
     }
}

5 个答案:

答案 0 :(得分:1)

获取所有三门课程所需ID的行。然后使用PHP检查每个课程值并相应地输出所需的HTML。

要结合if语句,请执行此操作(您已结束):

if (condition1 AND condition2)... 
elseif (condition3)... 

或者使用&&代替AND,它们在您的情况下but they are not the same because of precedence的工作方式相同。我正在写你的伪语言,它更容易阅读。

您可以拥有任意数量的条件:

if ( ((c1 OR c2) AND (!c3 AND c4) AND !(c5 AND c6)) OR c7 )... 

不要忘记停止使用mysql_ *函数,因为它们已被弃用。切换到mysqli或PDO。

答案 1 :(得分:1)

我知道如何在PHP的if中询问如何做多个条件。

布尔运算符&&(AND)和||(OR)将成为您的朋友。

if($cow=='brown'){
    if($cat=='white'){
        doStuff();
        }
    }

相同
if($cow=='brown' && $cat=='white'){
    doStuff();
    }

中间的&&表示如果两个部分都为真,则条件仅为真。

请参阅Logical Operators

第二个elseif将用于||。你提供的示例不起作用(如果第一个不正确,它将永远不会到达elseif)但是这两个是等价的:

 if($something){
    doStuff();
    }
 elseif($somethingElse){
    doStuff();
    }

 if($something || $somethingElse){
    doStuff();
    }

如果任何一个为真,它将是doStuff()。

答案 2 :(得分:1)

关于logical operators

Example ----- Name --- Result

$a and $b --- And - - - - TRUE if both $a and $b are TRUE.

$a or $b ---- Or ------- TRUE if either $a or $b is TRUE.

$a xor $b - Xor ------ TRUE if either $a or $b is TRUE, but not both.

! $a {----------- {1}} ------ Not

TRUE if $a is not TRUE. ---- $a && $b ------ And

TRUE if both $a and $b are TRUE. ---- $a || $b -------- Or


返回的$ result资源应该传递给mysql_fetch_array(),以及其他用于处理结果表的函数,以访问返回的数据

这样的事情:

TRUE if either $a or $b is TRUE.

Get result

旁注:自PHP 5.5.0起,不推荐使用mysql_ *函数,将来会删除它们。相反,应该使用MySQLi或PDO_MySQL扩展。另请参阅MySQL:选择API指南和相关的常见问题解答以获取更多信息。该功能的替代方案包括:

mysqli_fetch_assoc()

PDOStatement对象::抓取(PDO :: FETCH_ASSOC)

enter image description here

答案 3 :(得分:1)

这是 NOT 打算作为答案,只是因为评论太大了。

看起来你对这一切都很陌生。我们都是,曾经,所以我祝你好运。坚持下去,它将变得清晰和容易(你将建立一个很好的代码片段集合。)

阅读一些books。这真的让我加快了PHP和MySql的速度。

确保你知道when to use MySql and when to use Sqlite。我之所以提到这一点,是因为虽然PHP对MySQl略有偏好,但它也很乐意支持Sqlite。而且,如果你认为你可能会为Android或Ios开发,那么成为Sqlite大师可能会更好,因为它们都支持Sqlite,但都不支持MySql。

获得一个好的IDE。我个人喜欢Netbeans。这是编码&调试设施非常好。要在您自己的PC上进行开发,您需要Apache服务器和MySql;如果您使用的是Windows,那么我认为您无法击败Xampp(使用Linux会更容易)。

但是,我离题了,我只是提到你可能想要考虑你的数据库设计。只要您100%确定您将永远不会超过3门课程,它就可以正常工作。

即使这样,它也不是third normal form

我可能会从这样的事情开始。您可以根据需要添加更多列,我将留给您整理主键和外键。

mysql> show tables;
+------------------------+
| Tables_in_menu_example |
+------------------------+
| course_subscription    |
| courses_description    |
| students               |
+------------------------+
3 rows in set (0.00 sec)

mysql> describe students;
+------------+---------+------+-----+---------+----------------+
| Field      | Type    | Null | Key | Default | Extra          |
+------------+---------+------+-----+---------+----------------+
| student_id | int(11) | NO   | PRI | NULL    | auto_increment |
| email      | text    | NO   |     | NULL    |                |
+------------+---------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

mysql> describe courses_description;
+-------------+---------+------+-----+---------+----------------+
| Field       | Type    | Null | Key | Default | Extra          |
+-------------+---------+------+-----+---------+----------------+
| course_id   | int(11) | NO   | PRI | NULL    | auto_increment |
| course_name | text    | NO   |     | NULL    |                |
+-------------+---------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

mysql> describe course_subscription;
+------------+---------+------+-----+---------+-------+
| Field      | Type    | Null | Key | Default | Extra |
+------------+---------+------+-----+---------+-------+
| student_id | int(11) | NO   |     | NULL    |       |
| course_id  | int(11) | NO   |     | NULL    |       |
+------------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

我确实意识到这根本没有回答你的问题(对不起),但我希望它能帮助一些人。祝你好运!!

答案 4 :(得分:0)

尝试使用 * mysql_num_rows。*

示例:

    $syntax = mysql_num_rows(//your query syntax);
if($syntax >0 )
{
  // do return
}
else
{
  // refresh
}