Я хочу обновить мою базу данных имени пользователя 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 будет строкой, объект указан в
Вы не можете использовать $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();
}