我见过很多例子,但我无法正确回应我想要的东西。我的目标是将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);
?>
上面的代码甚至不会产生空集。它完全是空白的。我的代码中我做错了什么?
答案 0 :(得分:0)
while循环中有错误。 您正在循环中更改行变量的值,我希望使while循环中的条件无效并且控件退出循环。您已将base64encoding结果存储在另一个变量中。
while($row = $result->fetch_object()) { $row_encoding = base64_encode($row["image"]); $tempArray = $row_encoding; array_push($resultArray, $tempArray); }