所以我已经有一段时间了,我做的任何事情或研究都会导致更多错误。我不断收到此错误:致命错误:在非对象上调用成员函数query(),代码如下所示。 pic列用于他们上传的个人资料图片目录。
$newTarget_file = "uploads/picture.png"
....
$sql = "UPDATE users SET pic='$newTarget_file' WHERE username=:username";
if ($conn->query($sql) === TRUE) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . $conn->error;
}
这也是一个提交给他们的PHP保存他们上传的图片,目录是$ newTarget_file。这对我如何做到这一点非常令人沮丧。在此先感谢您的帮助。
基本上我想更新pic列,其中username =:username,其变量我已经$ newTarget_file。我该怎么办?
答案 0 :(得分:0)
正如其他人所说,错误是因为您的连接对象不存在。
致命错误:在非对象上调用成员函数query()
根据您所关注的教程,您实现了这个吗?
$conn = new mysqli($servername, $dbuser, $dbpw, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
在查询尝试运行之前,您应该遇到连接错误。另外,正如迈克尔指出的那样,你不能在mysqli中使用命名参数。它仅在PDO中受支持,但您仍然可以使用占位符。你的新代码看起来应该是这样的。
if (!($stmt = $conn->prepare("UPDATE users SET pic=? WHERE username=?"))) {
echo "Prepare failed: (" . $conn->errno . ") " . $conn->error;
exit;
}
if (!$stmt->bind_param("ss", $newTarget_file, $username)) {
echo "Binding parameters failed: (" . $stmt->errno . ") " . $stmt->error;
exit;
}
if (!$stmt->execute()) {
echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
exit;
}
$stmt->close();