【问题标题】:Php Mysql Switch/Case Statementphp Mysql Switch/Case 语句
【发布时间】:2025-02-22 07:15:02
【问题描述】:

我对表格单元格中的值使用 with 语句。在插入此语句之前一切都很好。我要做的就是根据字符串值更改文本上的颜色标签,但现在单元格是空白的,这告诉我没有任何情况是真的。我怀疑如果出现错误,那么语句后面的单元格也会是空白的,但它们是完整的。

如果我不得不猜测,我会说字符串声明中有错误,但我不确定。

<?php
$result = mysql_query("SELECT * FROM logs ORDER BY logid DESC");
while($data = mysql_fetch_array($result))
{
                            echo '<tr>
                                <td>'.$data["logid"].'</td>
                                <td class="center">'.$data["date"].'</td>
                                <td class="center">';

                                    $log_type='.$data["log_type"].';
                                    switch ($log_type) {
                                        case "Check in":
                                            echo '<span class="label label-success">'.$data["log_type"].'</span>';
                                            break;
                                        case "Log":
                                            echo '<span class="label">'.$data["log_type"].'</span>';
                                            break;
                                        case "Sensor Event":
                                            echo '<span class="label label-important">'.$data["log_type"].'</span>';
                                            break;
                                    }

                                echo '</td>
                                <td class="center">'.$data["log_entry"].'</td>
                                <td class="center">'.$data["customer_id"].'</td>
                            </tr>';
}
?>

完整的代码块只是简单地从 mysql 表中读取数据,然后以漂亮的表格式将其输出到网站中。通过使用不同的 CSS 类,我可以更改标签颜色。

问题是为什么这个案例只是一个空白单元格?

更新:对于那些阅读本文并寻找具体答案的人,我已更改行:

$log_type='.$data["log_type"].';

$log_type=$data["log_type"];

然后就解决了。

【问题讨论】:

  • echo $log_type 分配后看看你得到了什么。
  • 在您的开关中将$log_type 更改为$data["log_type"],因为$log_type 将包含.$data["log_type"].

标签: php mysql switch-statement case


【解决方案1】:

这是一个非常明显的错误。单引号下的变量将不会被解析,这就是您所做的。使用您当前的代码,$log_type 的值将是 .$data["log_type"]. (tested)

所以,你的代码:

$log_type= '.$data["log_type"].';

应该是:

$log_type= $data["log_type"];

如果你想在值周围加上单引号,你应该这样做:

$log_type = "'".$data["log_type"]."'";

【讨论】:

  • 你这个男人!就是这样。非常感谢你。我将为其他人编辑我的代码,以显示正确的答案。再次感谢
【解决方案2】:

$data 保存您的结果集数组。

在这一行:

$log_type='.$data["log_type"].';

您以错误的方式访问result set,要访问结果集的属性,您只需将它们括在object 的引号中($data 在这种情况下 ) 持有数组。下面是解决它的正确方法:

$log_type=$data["log_type"];

' 中连接或附上您的解决方案:

"'".$log_type."'""'".$data["log_type"]."'"

【讨论】: