使用动态值连接字符串

时间:2014-06-18 11:19:49

标签: php sql string-concatenation concat

我正在尝试使用数据库中的值来构建一个字符串,并根据' Operating_System'

的值更改变量$ protocol
$result = mysqli_query($con,"SELECT CONCAT('<OS=\"',Operating_System,'\" Protocol=\"RDP\"/>') as nodestring FROM `serverlist`;");
while($row = mysqli_fetch_array($result)) {
    echo $row['nodestring'];
}

例如:如果&#39; Operating_System&#39;的价值!==&#39; Windows&#39;然后将$ protocol更改为&#34; SSH&#34;。 有关如何实现这一目标的任何帮助吗?

1 个答案:

答案 0 :(得分:0)

我猜你看起来像这样:

$result = mysqli_query($con,
            "SELECT CONCAT(
                 '<OS=\"', Operating_System, '\" Protocol=\"', 
                        IF (Operating_System != 'Windows', 'SSH', 'RDP')
                  , '\"/>') as nodestring FROM `serverlist`;");

然而,这并不是建议这样做,您可以在查询后使用PHP实现这一点。根本不在你的mysql中使用HTML是一个好习惯。没有任何特殊原因,它会使事情变得更加复杂。所以我建议这样的事情:

$result = mysqli_query($con,
               "SELECT Operating_System as operating_system FROM `serverlist`;");
while($row = mysqli_fetch_array($result)) {
    $protocol =  $row['operating_system'] != 'Windows' ? 'SSH' : 'RDP';
    echo '<OS="' . $row['operating_system'] . '" Protocol="' . $protocol . '"/>';
}

第二个解决方案比第一个解决方案更易于维护,代码更具可读性。