Bonjour ,

je fais quelques teste pour un module de news , j'aimerais passer les infos récupérés dans ma base de donnée sous le format json .

J'ai mis ça sous forme d'un tableau etc... mais quand j'utilise json_encode() ça me returne false

J'ai trouvé un petit debug pour avoir plus de détail et ça me retourne :

JSON_ERROR_UTF8

Voici ma base de donnée ( ce sont des entrées tests ça vient de nulle part ) : http://gyazo.com/ef1af687f898f64413ae91c658b8ddfb

et mon code php :

<?php 
$db = new PDO('mysql:host=localhost;dbname=tuto-divers','root','root');
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
?>
 <html>
 <head>
    <title>Test</title>
    <meta charset='UTF-8' >
 </head>
 <body>

<?php 
$results = $db->query(" SELECT * FROM news_module ");
$news = array();
foreach ($results as $result){
    $news$result'id']] = array(
        'category' => $result'category'],
        'name' => $result'name'],
        );
}
var_dump(json_encode($news));
switch (json_last_error()) {
        case JSON_ERROR_NONE:
            echo ' - Aucune erreur';
        break;
        case JSON_ERROR_DEPTH:
            echo ' - Profondeur maximale atteinte';
        break;
        case JSON_ERROR_STATE_MISMATCH:
            echo ' - Inadéquation des modes ou underflow';
        break;
        case JSON_ERROR_CTRL_CHAR:
            echo ' - Erreur lors du contrôle des caractères';
        break;
        case JSON_ERROR_SYNTAX:
            echo ' - Erreur de syntaxe ; JSON malformé';
        break;
        case JSON_ERROR_UTF8:
            echo ' - Caractères UTF-8 malformés, probablement une erreur d\'encodage';
        break;
        default:
            echo ' - Erreur inconnue';
        break;}
 ?>
 ?>

 </body>
 </html>

Merci d'avance

3 réponses


Xen0risDEV
Réponse acceptée

Bonsoir,

$db = new PDO('mysql:host=localhost;dbname=tuto-divers','root','root', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));

Cordialement.

Merci ça fonctionne

Bonjour, pas de soucis :)