Показать сообщение отдельно
  #38 (permalink)  
Старый 13.06.2011, 19:05
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Invis1ble,
Я тебе приведу пример, а ты уж дальше сам скажи что использовать приятней и легче и ... ну в общем думаю будет понятно.

Выборка всех полей из таблицы в json с применением PDO:

$r = $pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($r);


и теперь без:

$arr = array();
$s = mysql_query($sql);
while($r = mysql_fetch_assoc($s)){
   $arr[] = '{ "id": "'.$r['id'].'", "title": "'.$r['title'].'", "content":"'.$r['content'].'"}';
} //здесь опущено экранирование переносов строк в content и title
echo '['.implode(",",$arr).']';


или вот так:

function mysql2json($mysql_result,$name) {
$result = array($name => array());
while ($row = mysql_fetch_assoc($mysql_result))
$result[$name][] = $row;
return json_encode($result);
}


или вот так:

function mysql2json($mysql_result,$name){
     $json="{\n\"$name\": [\n";
     $field_names = array();
     $fields = mysql_num_fields($mysql_result);
     for($x=0;$x<$fields;$x++){
          $field_name = mysql_fetch_field($mysql_result, $x);
          if($field_name){
               $field_names[$x]=$field_name->name;
          }
     }
     $rows = mysql_num_rows($mysql_result);
     for($x=0;$x<$rows;$x++){
          $row = mysql_fetch_array($mysql_result);
          $json.="{\n";
          for($y=0;$y<count($field_names);$y++) {
               $json.="\"$field_names[$y]\" :	\"$row[$y]\"";
               if($y==count($field_names)-1){
                    $json.="\n";
               }
               else{
                    $json.=",\n";
               }
          }
          if($x==$rows-1){
               $json.="\n}\n";
          }
          else{
               $json.="\n},\n";
          }
     }
     $json.="]\n};";
     return($json);
}
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием