mysql php 使用变量更新

mysql php update with a variable

所以我在这方面已经有一段时间了,我所做或研究的任何事情都会出现更多错误。我不断收到此错误:致命错误: 使用如下代码调用非对象上的成员函数 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 。我该怎么办?

正如其他人所说,错误是因为您的连接对象不存在。

Fatal error: Call to a member function query() on a non-object

根据您正在学习的教程,您实现了吗?

$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();