0

長くて忙しい質問をしてしまい、申し訳ありません。MySQL クエリとbase64_encode画像ブロブ データから結果を取得し、それを配列に返し、最後json_encodeに結果を取得して、Android アプリケーションで使用できるようにしようとしています。Android 側のすべてが適切に設定されていることはわかっています。

私が持っているものは次のとおりです。

PHP/SQL:

$query = "SELECT `locations`.`businessName`, `photos`.`img` 
        FROM `locations` 
        JOIN `photos` ON `locations`.`co_id` = `photos`.`co_id` 
        WHERE `locations`.`businessName` = '".$companyID."'";

    mysql_connect($dbserver, $dbusername, $dbpassword) or die(mysql_error());
    mysql_select_db($dbname) or die(mysql_error());

    $result = mysql_query($query) or die(mysql_error());  
    $num = mysql_numrows($result);
    $row = mysql_fetch_assoc($result);

    $i = 0;
    $rows = array();
    while ($i < $num) {

        $img = mysql_result($result, $i, "img");
        $finalImg['img'] = base64_encode($img);
        $businessName['businessName'] = mysql_result($result, $i, "businessName");

        $finalArray = array_push($rows, $businessName, $finalImg);
        // I know that array_push is pushing each variable as a separate array item
        // I tried creating an alternative variable that amends the two together
        // But that didn't work, result printed [Array, Array] [Array, Array]
        // Was I on the right track?

        $i++;
    }

    print json_encode($rows);

8 つの結果を返します。

[0] => {
    ["businessName"]=> string(12) "Some Company" }
[1] => {
    ["img"]=> string(145968) "/9j/4AAQSkZJRgABAQEAYABgAAD/4QIw..." }

必要なもの:

結果をこのように表示したいのですが、結果は 4 つしかありません。

[0] => {
    ["businessName"] => string(12) "Some Company" 
    ["img"] => string(145968) "/9j/4AAQSkZJRgABAQEAYABgAAD/4QIw..." }
[1] => {
    ["businessName"] => string(12) "Some Company", 
    ["img"] => string(145968) "/9j/4AAQSkZJRgABAQEAYABgAAD/4QIw..." }

Android アプリケーションのスニペット:

jArray = new JSONArray(result);
for (int i = 0; i < jArray.length(); i++) {
    JSONObject jObject = jArray.getJSONObject(i);
    String testerPhoto = jObject.getString("img");
    //Process image. Base64 decode... etc

Android エラー:

07-18 11:28:52.573: E/onPostExecute(14562): FAILED: No value for img
4

3 に答える 3

3

これははるかに簡単です:

$i = 0;
$rows = array();
while ($i++ < $num) {
    $img = mysql_result($result, $i, "img");
    $rows[] array(
        'businessName' => mysql_result($result, $i, "businessName"),
        'img' => base64_encode($img),
    );
}
于 2012-07-18T15:41:42.307 に答える
1

これはどうですか?

$rows[] = array(
  'img' => base64_encode($img),
  'businessName' => mysql_result($result, $i, "businessName")
);

または

array_push($rows, array_merge($businessName, $finalImg));
于 2012-07-18T15:44:54.953 に答える
1

これを試して:

array_push($rows, array_merge($businessName, $finalImg));
于 2012-07-18T15:40:23.417 に答える