首页 > 解决方案 > PHP根据选择的选项检索mysql存储的字符数据返回错误的字符

问题描述

好吧,我很困惑。请参阅下面的代码。

  1. 它将所有字符正确加载到列表中。
  2. 我从来没有收到任何错误。

但是,有些东西并没有真正起作用。因为无论我选择什么字符并按下选择字符,它总是在数据库中检索名称为“SUPERADMIN”的字符。我认为这可能是一个会话搞砸了,但我没有登录具有 SUPERADMIN 字符的帐户。任何想法我搞砸了?:S

        <!-- START: Load all characters from database, and put them in dropdown -->                                    
<form method="post" action="admin_settings.php">
    <input type="hidden" name="slct_id">                               
        <select name="names">
            <option value = "">---Select---</option>
<?php
    $stmt = $mysqli_0001->prepare("SELECT role_name FROM mugame_0001.mu_role");
    $stmt->execute();
    $stmt->bind_result($slct_name);
    while ($stmt->fetch()){
        echo "<option value='$slct_name'>$slct_name</option>";
    }
    $stmt->close();
?>
        </select>
        <input type="submit" name="indoc_dochrselect" value="Select Character">
 </form>
        <!-- END: Load all characters from database, and put them in dropdown -->

        <div class="nk-gap-2"></div> <!-- Creates a neat gap between the two thingie-mackdodies $ -->

                <!-- START: Load character information based on the selected character -->  
                <?PHP
                if (isset($_POST['indoc_dochrselect'])) {
                    $slct_id = $slct_name;
                    //$id = $_POST['id'];
                    if  ($stmt = $mysqli_web->prepare("SELECT * from mugame_0001.mu_role WHERE role_name = ?")) {
                    $stmt->bind_param("s", $slct_id);
                    $stmt->execute();
                    $res = $stmt->get_result();
                    $data = $res->fetch_all(MYSQLI_ASSOC);

            foreach ($data as $row) 
        {
            echo "<form action='php/mysqli_action_admin.php' method='post'>";
            echo "<input type='text' class='form-control' name='char_name' placeholder='" . $row['role_name'] . "'>";
            echo "<input type='text' class='form-control' name='char_level' placeholder='" . $row['role_level'] . "'>";
            echo "<input type='text' class='form-control' name='char_money' placeholder='" . $row['money'] . "'>";
            echo "<button class='nk-btn link-effect-4 float-right' name='do_adm_getinfo_selected_role_update'>Update Character</button>";
            echo "</form>";
                        }
                    }   
                }
?>
                <!-- END: Load character information based on the selected character -->

标签: phpmysqlmysqli

解决方案


bound_result 变量$slct_name正在向下流动。

这似乎是罪魁祸首:$slct_id = $slct_name;

您正在使用最终获取的值,但我相信您想使用 POSTed 值。

我假设最终获取的值是SUPERADMIN.

我相信您想使用$_POST['names']它,因为这是您选择字段中的名称属性。


推荐阅读