我之前在查询中使用 mysqli,现在我将其转换为 mysqli 准备好的语句。我正在尝试使用上传图像更新特定数据,但不知道为什么会收到错误
mysqli_stmt_bind_result(): Number of bind variables doesn't match number of fields in prepared statement in line 30
另外,如何在 mysqli 查询中执行查询,如mysqli_query($conn, $query)
下面是我的 UPDATE 查询的代码:
if (isset($_POST['submit'])) {
$imageName = mysqli_real_escape_string($conn, $_FILES["latest_photo"]["name"]);
$imageData = mysqli_real_escape_string($conn, file_get_contents($_FILES["latest_photo"]["tmp_name"]));
$imageType = mysqli_real_escape_string($conn, $_FILES["latest_photo"]["type"]);
if (substr($imageType, 0,5) == "image") {
$query = "UPDATE `crew_info` SET `updated_photo` = ? WHERE `id` = ?";
$stmt = mysqli_prepare($conn, $query);
mysqli_stmt_bind_param($stmt, 'ss', $imageData, $_GET['id']);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $id, $updated_photo);
//HOW CAN I EXECUTE THE QUERY HERE?
echo "Image Uploaded";
}
else {
echo "Image is not uploaded!";
}
}
在上面的代码中,有一个注释行说明如何执行查询。我怎样才能做到这一点?
当我点击“上传”按钮时,它说图像已上传,但没有出现在数据库中。这是为什么?
最佳答案
对于程序方式
$query = "UPDATE `crew_info` SET `updated_photo` = ? WHERE `id` = ?";
$stmt = mysqli_prepare($conn, $query);
// you should use i instead of s for id
mysqli_stmt_bind_param($stmt, 'si', $imageData, $_GET['id']);
mysqli_stmt_execute($stmt);
尝试一下面向对象的风格
$query = "UPDATE `crew_info` SET `updated_photo` = ? WHERE `id` = ?";
$stmt = $conn->prepare($query);
$stmt->bind_param("si", $imageData, $_GET['id']);
$stmt->execute();
关于php - 如何使用 mysqli 准备好的语句更新数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37558760/