Параметр является строкой, но все еще получает это предупреждение: Предупреждение: mysqli :: query () ожидает, что параметр 1 будет строкой - PullRequest
0 голосов
/ 31 мая 2019

Я хочу обновить мою базу данных 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 голосов
/ 31 мая 2019

Нельзя использовать $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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...