Bonjour à tous,
J'ai un problème avec une requête INSERT INTO là voici :
extract($_POST);
if ($name != '') {
$query=$PDO->prepare('INSERT INTO item_template
(type, name, level, statsTemplate)
VALUES (:type, :name, :level, :statsTemplate)');
$query->bindValue(':type',$type, PDO::PARAM_INT);
$query->bindValue(':name',$name, PDO::PARAM_STR);
$query->bindValue(':level',$level, PDO::PARAM_INT);
$query->bindValue(':statsTemplate',stats_item_add($statsTemplate), PDO::PARAM_INT);
$query->execute();
$query->CloseCursor();
echo ITEM_SUCCES;
}else {
echo ITEM_NOT_SUCCES;
}
Quand j'exécute cette requête j'ai un cannot be null de statsTemplate or quand j'y fais un echo j'ai bien ce que je souhaite...
Impossible de trouver l'erreur.
J'ai beau y mettre un int ou STR le résultat est le même.
Je publie pas ma function stats_item_add car elle fais un peu plus de 3000 lignes.
Voici le résultat d'une requête :
64#7#b#0#1d5+6,6e#a#0#0#0d0+10,77#23#0#0#0d0+35
si on a pas le reste difficile de retracer je pense ...
si ce n'est que de faire un debug() en cours de route de ta fonction stats_item_add ???
extract($_POST);
if ($name != '') {
$query=$PDO->prepare('INSERT INTO item_template
(type, name, level, statsTemplate)
VALUES (:type, :name, :level, :statsTemplate)');
$query->bindParam(':type',$type, PDO::PARAM_INT);
$query->bindParam(':name',$name, PDO::PARAM_STR);
$query->bindParam(':level',$level, PDO::PARAM_INT);
$query->bindParam(':statsTemplate',stats_item_add($statsTemplate), PDO::PARAM_INT);
$query->execute();
$query->CloseCursor();
echo ITEM_SUCCES;
}else {
echo ITEM_NOT_SUCCES;
}
Bonjour,
Quel est le type de donnee de la colonne statsTemplate dans la table ? Est-ce une cle etrangere?
64#7#b#0#1d5+6,6e#a#0#0#0d0+10,77#23#0#0#0d0+35
C'est le resultat de stats_item_add() ? Si oui, ca ne rentrera jamais dans un INT ! (enfin sans PDO, au chausse pied, potentiellement mais avec des resultats tres imprevisibles! 'null' par exemple !)
Varchar.
Mais pour la ligne là : $query->bindParam(':statsTemplate',stats_item_add($statsTemplate), PDO::PARAM_INT);
Ce n'est pas PARAM_INT mais PARAM_STR.
Quand je fais un debug juste avant la sauvegarde $statsTemplate me renvoi bien ma valeur attendu, le problème est donc au moment de l'insertion pourquoi ? Je sais pas.
Depuis ce temps j'ai jamais trouvé la solution je me suis donc mis à CakePHP.
Si vous souhaitez tout de même m'aider à résoudre ce problème, je dirais pas non, comme ça, sa m'évitera de refaire cette erreur ou même d'aider d'autres personnes.