【问题标题】:How can I echo a BLOB using JSON array in php?如何在 php 中使用 JSON 数组回显 BLOB?
【发布时间】:2015-05-14 03:16:42
【问题描述】:

我看过很多例子,但我无法正确地回应我正在寻找的内容。我的目标是将 BLOB 转换为 base64 并使用 php 回显 JSON 数组。我知道将图像作为 BLOB 存储在数据库中通常不是正确的方法,但我想这样做只是为了知道如何去做(普遍的共识似乎是存储对图像的引用,而这些引用又被存储在文件系统中是更好的方法)。我也很清楚我的 php 代码中可能存在多个安全问题(对 php 来说非常新)。我只是想知道这个。

这是我的表格的结构: http://s27.postimg.org/lod0ec0er/Screen_Shot_2015_05_13_at_10_49_29_PM.png

这是我的表格的内容: http://s15.postimg.org/joks2fvzv/Screen_Shot_2015_05_13_at_10_51_34_PM.png

这是我的第一次 php 代码尝试(在意识到我必须将 BLOB 转换为 base64 之前):

    if (mysqli_connect_errno())
    {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }

    $sql = "SELECT * FROM TestImages";

    if($result = mysqli_query($con, $sql))
    {
        $resultArray = array();
        $tempArray = array();

        while($row = $result->fetch_object())
        {
            $tempArray = $row;
            array_push($resultArray, $tempArray);
        }

        echo json_encode($resultArray);
    }

    mysqli_close($result);
    mysqli_close($con);
?>

这是上面代码显示的内容(我认为图像为空,因为 JSON 不能自然地处理 BLOB): http://s2.postimg.org/k2vi3r0ft/Screen_Shot_2015_05_13_at_10_52_06_PM.png

在意识到我必须将 BLOB 转换为 base64 之后,这是我修改后的 php 代码:

    if (mysqli_connect_errno())
    {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }

    $sql = "SELECT * FROM TestImages";

    if($result = mysqli_query($con, $sql))
    {
        $resultArray = array();
        $tempArray = array();

        while($row = $result->fetch_object())
        {
            $row["image"] = base64_encode($row["image"]);
            $tempArray = $row;
            array_push($resultArray, $tempArray);
        }

        echo json_encode($resultArray);
    }

    mysqli_close($result);
    mysqli_close($con);
?>

上面的代码甚至没有产生一个空集。它完全是空白的。我的代码做错了什么?

【问题讨论】:

    标签: php mysql json base64


    【解决方案1】:

    while 循环中有错误。 您正在循环内更改行变量的值,我希望这会使 while 循环中的条件无效,并且控制退出循环。您已将 base64 编码结果存储在不同的变量中。

    while($row = $result->fetch_object()) { $row_encoding = base64_encode($row["image"]); $tempArray = $row_encoding; array_push($resultArray, $tempArray); }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-02
      • 1970-01-01
      相关资源
      最近更新 更多