Ошибка Php while Loop в массиве, подключающемся к базе данных Postgresql - PullRequest
1 голос
/ 29 июня 2011

У меня есть статический код для обновления некоторых полей выбора.

Исходный код структуры:

$result = "
      ({ 
        'options': [
          {'value': '','description': '(pick an item)'}, 
          {'value': 'test','description': 'test'}, 
          {'value': 'test_2','description': 'test_2'}
        ]
      });
    ";

Я пытаюсь сделать это динамическим и подключиться к моей таблице в базе данных Postgresql, но мой код не работает.

Вот мой код:

if($value=="asus"){

    require("includes/connection.php");

    $sth = $dbh->prepare( "SELECT * FROM mapa_ferias WHERE area = 'Asus' " );
    $sth->setFetchMode(PDO::FETCH_ASSOC);
    $sth->execute();

    $result = "
    ({
      'options': [";

            while($row = $sth->fetch()) { 
            $result += "{'value': '" + $row['nome'] + "','description': '" + $row['nome'] + "'},";
    }

    $result += 
            "]
        });
    ";
  }

Я надеюсь, что вы можете мне помочь. Заранее спасибо.

1 Ответ

1 голос
/ 29 июня 2011

Пожалуйста, не пытайтесь создавать данные JSON самостоятельно. В PHP есть функция для этого: json_encode()

if ($value=="asus"){

    require("includes/connection.php");

    $sth = $dbh->prepare( "SELECT * FROM mapa_ferias WHERE area = 'Asus' " );
    $sth->setFetchMode(PDO::FETCH_ASSOC);
    $sth->execute();

    $options = array();
    while($row = $sth->fetch()) { 
        $options[] = array(
            'value' => $row['nome'], 
            'description' => $row['nome']
        );
    }
    $sth->closeCursor();

    $result = '('.json_encode(array(
        'options' => $options
    )).')';
}
...