【问题标题】:How to UPDATE in database using mysqli prepared statement? [duplicate]如何使用 mysqli 准备好的语句更新数据库? [复制]
【发布时间】:2016-06-01 03:07:48
【问题描述】:

我在查询之前使用 mysqli,现在我将其转换为 mysqli 准备好的语句。我正在尝试使用上传图片更新特定数据,但我不知道为什么会出现错误

mysqli_stmt_bind_result():绑定变量的数量与第 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!";

        }

}

在上面的代码中,有一个关于如何执行查询的注释行。我该怎么做?

当我点击按钮上传时,它说图像已上传但未出现在数据库中。这是为什么呢?

【问题讨论】:

  • 在我的mysqli_stmt_bind_result() 中,我尝试包含该表中的所有列。
  • 您正在运行一个不返回任何结果的更新语句,这就是您无法使用mysqli_stmt_bind_result 绑定到结果的原因。如果要返回结果,则需要第二条语句,例如 SELECT crew_info, updated_photo WHERE id = ?
  • 对不起,我是 mysqli 新手,准备好了
  • 如何在 mysql_prepared @JeffPuckettII 中执行查询?
  • 您已经执行了查询。您需要 fetch 行。顺便说一句:您不需要转义由 ? 占位符中的准备语句插入的数据。

标签: php mysql mysqli


【解决方案1】:

程序方式

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

【讨论】:

  • 程序化怎么办?
  • 感谢此代码有效,但存在问题。在数据库中,什么都没有存储?
猜你喜欢
  • 2016-04-05
  • 2012-03-26
  • 2012-12-01
  • 2017-04-09
相关资源
最近更新 更多