【问题标题】:How to make a PHP if statment dependent on SQL query results如何根据 SQL 查询结果制作 PHP if 语句
【发布时间】:2014-01-25 03:14:48
【问题描述】:

我试图根据 SQL 数据结果根据用户级别是 1 还是 5 来回显用户级别。这里:

<?php while ($rrows = mysql_fetch_array($rs_results)) {?>
      <tr> 
        <td><input name="u[]" type="checkbox" value="<?php echo $rrows['id']; ?>"     id="u[]"></td>
        <td><?php echo $rrows['id']; ?></td>
        <td><?php echo $rrows['date']; ?></td>
        <td><?php echo $rrows['user_name'];?></td>
        <td><?php echo $rrows['user_email']; ?></td>
        <td><?php ?></td>

所以我需要一种if 语句来从$rrows['id'] 中选择用户级别,然后如果选择的数据是1,则回显“网络”,如果是“5”,则回显“管理员”。如何做到这一点?

【问题讨论】:

  • 你想在哪里显示?
  • 仅仅因为数据来自 mysql 并不意味着您不能使用普通的if($row['id'] == 'something') { ...} 类型构造...
  • 首先,你做了这一切但不能做if 声明?其次,可能更容易使用switch-case&lt;td&gt;&lt;?php ?&gt;&lt;/td&gt; 是干什么用的?不需要那个空的 PHP sn-p
  • echo ($rrows['id']==1)?"Network":"Administrator";
  • @yani 希望它显示在空的 部分。

标签: php mysql if-statement echo


【解决方案1】:

看来你需要这样的东西:

$user_levels = array('Network','role2','role3','role4','Administrator');

<?php while ($rrows = mysql_fetch_array($rs_results)) {?>
      <tr> 
        <td><input name="u[]" type="checkbox" value="<?php echo $rrows['id']; ?>"     id="u[]"></td>
        <td><?php echo $rrows['id']; ?></td>
        <td><?php echo $rrows['date']; ?></td>           
        <td><?php echo $users_levels[(int)$rrows['id']-1]; ?></td>
        <td><?php echo $rrows['user_name'];?></td>
        <td><?php echo $rrows['user_email']; ?></td>
        <td><?php ?></td>

我在数组中使用 -1 的原因是因为数组是基于 0 的,并且您的角色从 1 开始。 如果您需要使用 'user_level',只需将行替换为

<td><?php echo $users_levels[(int)$rrows['user_level']-1]; ?></td>

希望这会有所帮助!

【讨论】:

  • 只是累了这个,没有显示任何东西。不过还是谢谢你的建议!:)
  • 没有理由它不应该工作,你用'user_level'替换'id'吗?
  • @Yani 不,我又试了一次,它说 Parse error: syntax error, unexpected 'while' (T_WHILE) in {path}
  • 好像你在发布代码之前有一个错误...可能忘记输入';',或者关闭 if 或循环...
  • 是的,我发现了错误,但仍然没有显示任何内容;没有错误,只是没有输出。
【解决方案2】:

我想知道你是如何在没有 if 语句的情况下做到这一点的,但无论如何,你也可以在你的 sql 查询中做到这一点。我总是尝试将尽可能多的逻辑外包给 mysql,以实现负载均衡。

SELECT level, IF(level = 1, 'Network', 'Administrator') as level FROM table

我认为您可以嵌套 if 语句以获得更多选项。

改编自这个答案:'IF' in 'SELECT' statement - choose output value based on column values

【讨论】:

    【解决方案3】:

    我不会用 if 语句来做。我会这样做:

    $levels = array(1 => "Network", 5 => "Administrator");
    echo $levels[$rrows['user_level']];
    

    这样,如果你想添加其他级别,你只需在数组中添加一个值就可以了。

    【讨论】:

    • 刚刚试了一下,也没有任何显示!嗯谢谢你的建议!
    • 正如我的同事 Yani 所说,这没有理由不工作。 $$rows['id'] 里面是什么?您的数据库中是否还有其他字段,例如 user_level?
    • $rrows['id' 是每个用户的唯一 ID,然后在该数据库(表)中有字段,包括名称等,然后 user_level 是一个数字,然后是我想要更改为的那个数字一个单词,取决于查询的数字。
    • 好的。你能确认 user_level 是 1 还是 5 ?如果是这样,你应该回显 $levels[$rrows['user_level']] 就可以了。
    • @StephaneMombuleu - 你解决了!最后一条评论修复了它,现在可以按我的意愿工作。谢谢!:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-21
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-06
    相关资源
    最近更新 更多