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


byflo
Réponse acceptée

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

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

Il y a un moyen directement de retirer la limite.

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

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

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

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é.

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.

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