Inserer plus de 100000 caractères PDO

Par remy76690, il y a 10 ans


Bonjour,

Voila, j'essaye de inserer un contenu d'un formulaire avec json_encode dans la base de donnée, et malheuresement j'ai une erreur dont je n'arrive pas réelement à la comprendre. D'après, se que je comprend, c'est que la chaine est trop grande (1084367)

Ce que je fais

Actuellement, je ne le fait pas propre car ce sont juste des testes.

$a = array( "fr" => $_POST["input_sec"], "en" => $_POST["input_sec"] ); $host = "localhost"; $username = "root"; $password = ""; $dbname = "dd"; try { $bdd = new PDO('mysql:host='.$host.';dbname='.$dbname.';charset=utf8', $username, $password); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (Exception $e) { die('Erreur : ' . $e->getMessage()); } var_dump(json_encode($a)); $req = $bdd->prepare("INSERT INTO `Presentation`(`active`, `content`, `last_update`) VALUES (:active, :content, NOW())"); $req->execute(array( ":active" => 1, ":content" => json_encode($a) )); $req->closeCursor();

Je pense que le code est facilement compréhensible ;)

Ce que je veux

Je voudrais pouvoir inserer sans problème ;)

Ce que j'obtiens

Une joli erreur :

9 réponses

ToToSe, il y a 10 ans

Vérifie la valeur de " max_allowed_packet " dans ton fichier de configuration MySQL "my.cnf"

remy76690, il y a 10 ans

Il y a un moyen directement de retirer la limite.

byflo, il y a 10 ans

Non tu peux pas retirer cette limite, et la valeur maximum est 1073741824 (1GB)
Tu peux tenter de lancer une requête mysql du type : SET GLOBAL max_allowed_packet=xxx en début de page si tu ne veux/peux pas modifier ta configuration mysql

flo3376, il y a 10 ans

envoie le code complet car ça ressemble à un boucle for while ou foreach qui n'est pas interrompu

remy76690, il y a 10 ans

Bas, le seul autre code, est le html et un peu de js pour que le bouton submit fonctionne avec le contenteditable.

flo3376, il y a 10 ans

ha désolé, il ne voulait pas apparaitre hier, autant pour moi

flo3376, il y a 10 ans

c'est ta fonction Json encode qui se plante, essaie juste dans un premier temps d'envoyer en serialize plutot qu'en json, voir comment réagit ton script. mais je pense que ton soucis réelle vient de se que tu essaie d'encoder, ou de ton serveur qui a un loup

JSONENCODE on line35

j'ai l'impression que ta pdo a du patienter trop longtemps et t'a répondu occupé.

remy76690, il y a 10 ans

En changant le max_allowed_packet j'ai plus réellement ce problème. Donc, je pense que ça vien bien de la chaîne de caractère.

ToToSe, il y a 10 ans

Si ton sujet est résolu, tu peu changer le statut du sujet :)