2010-10-18 16 views
2

Je dois retourner les données extraites de la table MySQL dans un fichier php en JSON. Voici mon code pour me connecter à mysql & obtenir des données de celui-ci. Comment pourrais-je maintenant le renvoyer comme JSON.Comment retourner les données récupérées depuis MySQL dans un fichier php en JSON?

<?php 
    $username = "user"; 
    $password = "********"; 
    $hostname = "localhost";  
    $dbh = mysql_connect($hostname, $username, $password) 
     or die("Unable to connect to MySQL"); 
    print "Connected to MySQL<br>"; 
    $selected = mysql_select_db("spec",$dbh) 
     or die("Could not select first_test"); 
    //$rows = array(); 

    $query = "SELECT * FROM user_spec"; 
    $result=mysql_query($query); 

    //mysql_close($dbh); 
    ?> 

Sous est la pile complète que je dois implémenter. Pour l'étape 3, je rends la liste de façon dynamique en utilisant les entrées de l'utilisateur, même si elle n'utilise aucun moteur mais utilise directement les valeurs d'entrée, je dois donc voir comment faire une fois que j'obtiens des données JSON. Je mets la pile pour que vous puissiez voir ce que je dois faire quand vous m'aidez peut-être.

  1. l'utilisateur charge une page HTML
  2. la page faire un appel ajax et obtenir les options en tant que JSON (soit il existe déjà dans la base de données, ou un nouvel ensemble d'options est généré)
  3. JSON est rendu à l'aide d'un moteur de templating JS (PURE dans notre cas)
  4. le changement d'utilisateur quelque chose
  5. même JSON est modifié et envoyé par un POST au serveur
  6. le serveur lu que JSON et la stocker dans la base de données (vous écririez les données t o votre fichier). Et puis revenez à l'étape 4, pour attendre un autre changement d'utilisateur.

Répondre

3

étant donné qu'un seul user_spec ligne est retournée, vous pouvez utiliser le construit en fonction json_encode:

<?php 
$username = "user"; 
$password = "********"; 
$hostname = "localhost";  
$dbh = mysql_connect($hostname, $username, $password) 
    or die("Unable to connect to MySQL"); 

//print "Connected to MySQL<br>"; 

$selected = mysql_select_db("spec",$dbh) 
    or die("Could not select first_test"); 

$query = "SELECT * FROM user_spec"; 
$result=mysql_query($query); 

echo json_encode(mysql_fetch_assoc($result)); 

?> 

devrait faire l'affaire.

Même si vous utilisez une ancienne version de PHP, vous pouvez trouver une fonction appropriée dans les commentaires de l'utilisateur à la page json_encode PHP Manual à utiliser à sa place.

1

Sauf si vous êtes comme moi en utilisant une version douloureusement ancienne de Symfony (pour votre bien, je l'espère pas!) Votre réponse est json_encode Zend et CodeIgniter ont d'autres méthodes simples similaires.

Si vous n'avez pas la chance d'y avoir accès, vous pouvez le créer manuellement via la boucle foreach.

Vous pouvez vérifier vos chaînes JSON en utilisant JSONlint