如何在php中使用JSON数组回显BLOB?

时间:2015-05-14 03:16:43

标签: php mysql json base64

我见过很多例子,但我无法正确回应我想要的东西。我的目标是将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);
?>

以上代码显示的内容(我相信image为null,因为JSON无法自然处理BLOB): HTTTP://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);
?>

上面的代码甚至不会产生空集。它完全是空白的。我的代码中我做错了什么?

1 个答案:

答案 0 :(得分:0)

while循环中有错误。 您正在循环中更改行变量的值,我希望使while循环中的条件无效并且控件退出循环。您已将base64encoding结果存储在另一个变量中。

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