mysqli结果回来不同

时间:2013-12-08 21:27:50

标签: php mysql mysqli

我使用mysqli编写了一个PHP函数,我得到的结果与MySQL数据库中存储的结果不同。我在phpMyAdmin中尝试了MySQL命令,一切都按照我的预期回来了。

Users Table
---------------------------------------------------------------------
Id [int(11)]|Username [varchar(16)]|Status [enum('Active', 'Inactive')]
---------------------------------------------------------------------
          1 |                  ABC |         Active
          2 |                  DEF |         Active


PMK Table
------------------------------
Id [int(11)]|Camel [tinyint(1)]
------------------------------
          1 |        1
          2 |        0


function getFeature($script, $username, $feature)
{
    global $mysqli;
    $stmt = $mysqli->prepare("SELECT Id FROM Users WHERE Username = ? AND Status = 'Active'");
    $stmt->bind_param("s", $username);
    $stmt->execute();
    $stmt->bind_result($id);
    $id = $stmt->fetch();
    $stmt->free_result();

    if(isset($id) && !empty($id))
    {
        switch($script)
        {
            case "PMK":
                switch($feature)
                {
                    case "Camel":
                        $stmt = $mysqli->prepare("Select Camel FROM PMK WHERE Id = $id");
                        $stmt->execute();
                        $stmt->bind_result($access);
                        $access = $stmt->fetch();
                        $stmt->free_result();
                        printf("%s:%s:%s:%s", $script, $feature, $username, $access);
                        break;
                    default:
                        echo "[ERROR]";
                        break;
                }
                break;
            default:
                echo "[ERROR]";
                break;
        }

    } else {
        echo "[ERROR]";
    }

    $stmt->close();
}

我的功能是否出错会导致我的结果不同?

1 个答案:

答案 0 :(得分:0)

我自己解决了这个问题。问题是由于彼此之间存在可变的冲突。当我不应该使用$ id来绑定和存储fetch;更改变量名称解决了问题。

很高兴你们这么有帮助:D