Bonjour à tous et toutes
Je voudrais avoir les données en json, j'ai regardé sur le net on ça donnerai ça
$pdo = $this->getPDO(); // getPDO cf le tuto
$req = $pdo->query($statement);
$datas = $req->fetchAll(PDO::FETCH_ASSOC);
$json = json_encode($datas);
Mais cela ne fonctionne pas. Est ce quelq'un a déjà essayé ? si oui une réponse de code correct pour me dire ce qui ne va pas.
Normalement tu devrais faire ceci
new PDO("mysql:host=localhost;dbname=DB;charset=UTF8")
en parlant du charset bien sûr ;)
c'est bon j'ai trouvé. j'avais oublié de préciser que je suis novice en PHP.
Je suis plus c#.
Donc en fait ca vient du PDO
j'ai ajouté : pdo->exec("SET CHARACTER SET utf8");
Et cela fonctionne.
Merci, le fait d'avoir en parler à quelqu'un cela m'a permis de trouver des pistes.
bonjour
je crois mysql peut etre à l'origine de ta mésaventure. quel est ta version de php? et comment te connecte tu à la bdd? à tu pris la peine de preciser le charset lors de ta connexion à la bdd?
voici petit code qui prend en charge les differentes versions de php
define('DB_HOST', 'localhost');
define('DB_NAME', 'test');
define('DB_USER', 'test');
define('DB_PASSWORD', 'test');
define('DB_ENCODING', 'utf8');
$dsn = 'mysql:host=' . DB_HOST . ';dbname=' . DB_NAME;
$options = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
);
$cmd = 'SET NAMES ' . DB_ENCODING;
if( version_compare(PHP_VERSION, '5.3.6', '>') )
{
if( defined('PDO::MYSQL_ATTR_INIT_COMMAND') )
$options[PDO::MYSQL_ATTR_INIT_COMMAND] = $cmd ;
else
$dsn .= ';charset=' . DB_ENCODING;
}
$conn = @new PDO($dsn, DB_USER, DB_PASSWORD, $options);
if( version_compare(PHP_VERSION, '5.3.6', '<') )
$conn->exec($cmd );
je pense que le code ci-dessus devrait regler ton probleme d'encodage
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
J'ai déjà utilisé json_encode avec un array que je construits mais la c'est avec des données PDO que je demande.
Si c'est pour avoir l'erreur retourner c'est "Malformed UTF-8 characters, possibly incorrectly encoded";
Mais cela ne m'avance pas plus, car même en essayant des options de json_encode cela ne fonctionne pas.
Merci iriven, ta réponse pourra aussi aider, je la mets aussi comme correct même si je ne l'ai pas essayé.