参数为字符串,但仍收到此警告:警告:mysqli :: query()期望参数1为字符串

时间:2019-05-31 03:03:24

标签: php mysqli

我想更新我的mysql数据库的用户名,但是,只要我的用户名包含任何数字(尽管总体上是一个字符串),它仍然会输出 警告:mysqli :: query()期望参数1为字符串,对象位于

我试图在没有准备和绑定参数的情况下使用它,这是可行的。

function setUsername($guid, $username2) {
        global $serverName, $username, $password, $database;
        $conn = new mysqli($serverName, $username, $password, $database);
        $username2 = $username2 . "";
        $query = $conn->prepare("UPDATE players SET username = ? WHERE guid = ?");
        $query->bind_param("si", $username2, $guid);
        $conn->query($query);
    }

我希望此更新成功。但是,如果我在字符串中包含任何数字,例如 awefw1afweaw,它将输出警告:mysqli :: query()期望参数1为字符串,对象位于

1 个答案:

答案 0 :(得分:0)

您不能在准备好的语句中使用$conn->query()$conn->prepare()返回一个mysqli_stmt对象,该对象将传递给$conn->query(mysqli_stmt),并且是错误消息的原因。

相反,您需要将$conn->query()替换为$query->execute();

function setUsername($guid, $username2) {
    global $serverName, $username, $password, $database;
    $conn = new mysqli($serverName, $username, $password, $database);
    $username2 = $username2 . "";
    $query = $conn->prepare("UPDATE players SET username = ? WHERE guid = ?");
    $query->bind_param("si", $username2, $guid);
    $query->execute();
}