首页 > 解决方案 > PHP MySQL函数计算输出

问题描述

我编写了一个函数,其中应从两个表中获取按钮的值。五个按钮应并排显示。这在理论上可行,但是第一个按钮的输出显示 5 次,第二个按钮显示 4 次,依此类推。

我错过了什么输出多次输出?

function get_strat($map_id, $map_site, $operator_role_input) {

    global $connection;

    $query = "SELECT * FROM strat WHERE map_id = $map_id AND strat_role_id = $map_site";
    $select_all_defense_strats = mysqli_query($connection, $query);

    while($row = mysqli_fetch_assoc($select_all_defense_strats)) {

        $map_id = $row['map_id'];
        $operator_id = $row['operator_id'];
        $operator_role = $row['operator_role'];

        if($operator_role === $operator_role_input) {
            $query = "SELECT operator_name FROM operator WHERE operator_id = $operator_id";
            $get_operator_name = mysqli_query($connection, $query);

            $row = mysqli_fetch_assoc($get_operator_name);

            $operator_name = $row['operator_name'];

        } 

        echo $operator_name;

    }
}
<div class="btn-group">
    <button type="button" class="btn btn-default">
        <?php 
            $operator_role_input = '1';
            get_strat($map_id, $map_site, $operator_role_input);
        ?>
    </button>
    <button type="button" class="btn btn-default">
        <?php 
            $operator_role_input = '2';
            get_strat($map_id, $map_site, $operator_role_input);
                    ?>
    </button>
    .... (up to 5)

实际输出

标签: phpmysql

解决方案


因为您的变量$operator_nameif statement. 当它有价值时 - 它会打印它。当比较为假时 - 然后它是undefined

把它的默认值放在前面if statement

$operator_name = '';
if(){...}
echo $operator_name;

或者只是把你的echo $operator_name;里面和你的if statement.


推荐阅读