1

我目前正在构建一个 HTML5 应用程序,该应用程序从 php webservice 获取其数据 json 编码。我也有存储在数据库中的小图像,并希望将它们作为使用 json 结果编码的 base64 返回。

目前我得到所有的mysql字段,然后像这样返回json:

$query = "SELECT * FROM `news` ";

$posts = array();
if(mysql_num_rows($result)) {
  while($post = mysql_fetch_assoc($result)) {
    $posts[] = array('post'=>$post);
  }
}

 header('Content-Type: text/javascript');
echo json_encode(array('posts'=>$posts));

我有一个叫做图片的领域。现在我想用base64转换数组posts[]中的图片数据,我可以简单地用json返回所有数据,而无需另一个http请求。

我的 php 技能不是很好,但我想到了类似的东西:

$posts['picture'] = base64_encode($posts['picture']);

但是我需要将每张图片都转换为base64,所以最好把它放在while循环中:

while($post = mysql_fetch_assoc($result)) {
    if($post == 'picture'){
      $post = base64_encode($post);
    }
    $posts[] = array('post'=>$post);
  }  

这能行吗?还是有其他/更好的方法?谢谢!

4

3 回答 3

2

通常,将图片(或任何二进制数据)存储在数据库中并不是一个好主意。经典的方式是存储图片的位置。如果您出于任何原因更喜欢将图片存储在数据库中,您可以执行您正在执行的操作。

顺便说一句,当您将图片插入数据库时​​,您可以直接将图片以base64编码,这样可以避免每次要访问其中一张时重新转换它。

于 2013-05-04T17:09:04.140 回答
1

谢谢!你是对的......我应该考虑在未来改变我的代码。

现在,仅对于几个小图像,这对我有用:

while($post = mysql_fetch_assoc($result)) {
    $post['picture'] = base64_encode($post['picture']);
    $posts[] = array('post'=>$post);
  }
于 2013-05-04T17:12:20.413 回答
1

并非如此,首先,mysql_fetch_assoc 将返回整行(所有列),这意味着$post将包含每个列名,例如:

$post['column_name_a']

$post['column_name_b']

$post['column_name_c']

....

所以,你应该这样做(它是否为空并不重要):

$post['picture'] = base64_encode($post['picture']);

然后,您可以将其添加到 $posts[] 数组,然后 json_encode() 进行打印。

作为旁注,mysql_fetch_assoc 已从 PHP 5.5 中弃用,并将在未来删除 - 请参阅http://php.net/manual/en/function.mysql-fetch-assoc.php

于 2013-05-04T17:14:08.857 回答