我想更新我的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为字符串,对象位于
答案 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();
}