使用 php 从数据库中的整数创建并回显一个字符串

Create and echo a string from integers in database with php

我 select 我的数据库中的一列 'status' 包含 3 个整数。我希望 0,1,2 在用户进入页面后向用户回显你好,再见,无论什么。

0 = hello
1= goodbye
2= whatever

我找不到任何例子来说明你如何用 php 回应这个。

我看过很多示例,这些示例只是为 $var = 1 $var= hello... 等提供冷代码。我看不出这如何适合一个真实的例子。

到目前为止,我 select 列和状态将回显,但状态 0 前面有一个 1,状态 1 末尾有一个 1。

echo "<td>".( $row["status"]==0 ?  : 'Hello' ). ( $row["status"]==1 ?  : 'Goodbye' ) ."</td>";

Table 结果

Status:
hello1
hello1
hello1
1goodbye
hello1
1goodbye 

您有几个选择:

PHP 切换语句:

switch ($row["status"]) {
    case 0: $var = "hello"; break;
    case 1: $var = "goodbye"; break;
    case 2: $var = "whatever"; break;
}

完整示例:

$str = "<td>";
switch ($row["status"]) {
    case 0: $str .= "hello"; break;
    case 1: $str .= "goodbye"; break;
    case 2: $str .= "whatever"; break;
}
$str .= "</td>";
echo $str;

或者您可以在 mysql:

中做一个 case 语句
SELECT status,
CASE
    WHEN status = 1 THEN "Hello"
    WHEN status = 2 THEN "Goodbye"
    WHEN status = 3 THEN "Whatever"
END
FROM yourTable

只是修复你目前拥有的东西,因为你使用的是 ternary operator, you need to use it correctly. Also need to be aware that checking ==1 checks for truthiness 而不是 1,所以 2 也会匹配,所以改用 === 代替:

改为:

echo "<td>". ( $row["status"]===0 ? 'Hello' : '' ) . ( $row["status"]===1 ? 'Goodbye' : '' ) . ( $row["status"]===2 ? 'Whatever' : '' ) . "</td>";

您可以使用数组来保存它可能的各种选项。它几乎就像一个小型查找 table,但节省了到另一个数据库的链接 table...

$options = [ 0 => "hello", 1 => "goodbye", 2 => "whatever" ];
$row["status"] = 1;

echo "<td>". $options[$row["status"]]."</td>";

给...

<td>goodbye</td>