Les querys "INSERT" ne fonctionnent pas sur mon CMS.

Résolu/Fermé
M3NSONG3 Messages postés 615 Date d'inscription mardi 16 avril 2013 Statut Membre Dernière intervention 4 novembre 2021 - 30 août 2017 à 15:31
M3NSONG3 Messages postés 615 Date d'inscription mardi 16 avril 2013 Statut Membre Dernière intervention 4 novembre 2021 - 30 août 2017 à 18:00
Bonjour,

J'utilise un cms que j'avais développer qui marchait très bien, puis j'ai changé d'hebergeur, et là c'est le drame. J'ai l'impression qu'aucune de mes querys INSERT ne marchent, aucune erreur, quelqu'un aurait une idée ?

Je suis sous Debian8 avec apache2.

Exemple de query :
bdd('player_alpha')->exec("INSERT INTO item (owner_id, window, pos, count, vnum,socket0,socket1,socket2) VALUES (" . $_SESSION['id'] . ", 'MALL', '$pos', '$nb_item', '$item','1','1','1')");


Alors que les querys SELECT marchent très bien, exemple :

("SELECT flag FROM item_proto WHERE vnum = '$item' ");

3 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
30 août 2017 à 15:38
Bonjour,

Tu utilises quoi PDO ou mysqli ?
Ensuite... as tu essayé de faire un ECHO de la requête pour voir ce qu'elle contient exactement ?
As tu ensuite testé cette requête DIRECTEMENT dans ta bdd (via phpmyadmin par exemple) ?

1
M3NSONG3 Messages postés 615 Date d'inscription mardi 16 avril 2013 Statut Membre Dernière intervention 4 novembre 2021 162
30 août 2017 à 15:46
J'utilise PDO. Oui j'ai fais des echos, ma requète contient toute les infos, et oui elle marche si je la lance de Navicat !


Cordialement.
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
30 août 2017 à 16:15
Bonjour,

Déjà... il faut commencer par ACTIVER la gestion des erreurs PDO dans la chaine de connexion
Puis... placer CHACUNE de tes requêtes dans des blocs TRY/CATCH.

Voir ici comment faire proprement :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs


.
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
Modifié le 30 août 2017 à 16:51
Ah .. et puis... vu que tu utilises PDO .. il serait temps de passer aux requêtes préparées pour éviter les soucis d'injection SQL...
Dans l'idéal, ta requête s'écrirait ainsi :
//récupération PROPRE des variables AVANT de les utiliser !
$id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;



//préparation de la requête et des variables
 $sql = "INSERT INTO item (owner_id, window, `pos`, `count`, vnum,socket0,socket1,socket2) 
                   VALUES (:id, :window, :pos, :nb_item,:vnum,socket0,:socket1,:socket2)";

 $datas = array(':id'=>$id,
                ':window' =>'MALL',
                ':pos' =>$pos,
                ':nb_item' =>$nb_item,
                ':vnum' =>$item,
                ':socket0' =>1,
                ':socket1' =>1,
                ':socket2' =>1
                );

//Execution de la requete
try{
  $requete = $bdd -> prepare($sql) ;
  $requete->execute($datas) ;
}catch(Exception $e){
  // en cas d'erreur :
   echo " Erreur ! ".$e->getMessage();
   echo " Les datas : " ;
  print_r($datas);
}

0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
30 août 2017 à 16:07
Salut,

As tu essayer de gérer le retour de la méthode exec pour afficher l'éventuel message d'erreur ?
Par exemple :

$pdo = bdd('player_alpha');

$result = $pdo->exec("INSERT INTO item (owner_id, window, pos, count, vnum,socket0,socket1,socket2) VALUES (" . $_SESSION['id'] . ", 'MALL', '$pos', '$nb_item', '$item','1','1','1')");

if ($result === false) {
    print_r($pdo->errorInfo());
} else {
    echo 'Insertion réussie';
}


Bonne journée,
1
M3NSONG3 Messages postés 615 Date d'inscription mardi 16 avril 2013 Statut Membre Dernière intervention 4 novembre 2021 162
Modifié le 30 août 2017 à 16:38
Merci de vos réponses !
Après une vérification, les erreurs PHP ne s'affichent pas (j'ai essayé d'enlever un ; pour vérifier) Comment puis-je les remettre ? c'est un bout de code que j'avais ajouté ? (ça fait très très très longtemps que j'ai pas touché, et comme j'ai appris beaucoup de langage pendant ce temps là, j'ai des trous de mémoire).


(J'ai aussi remarqué que le code ce stop net sur les querys avec INSERT.)
Merci de votre aide !

Cordialement, M3NSONG3 !
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
30 août 2017 à 16:50
Pour activer l'affichage des erreurs PHP :
error_reporting(E_ALL);
ini_set('display-errors','on');

0
M3NSONG3 Messages postés 615 Date d'inscription mardi 16 avril 2013 Statut Membre Dernière intervention 4 novembre 2021 162
30 août 2017 à 16:54
Merci, mais même avec ça je n'obtiens toujours aucune erreur :/

Si j'enlève par exemple un point virgule, la page ne s'affiche pas, mais sans erreur.
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > M3NSONG3 Messages postés 615 Date d'inscription mardi 16 avril 2013 Statut Membre Dernière intervention 4 novembre 2021
30 août 2017 à 16:57
Dans ce cas faut regarder dans les paramètres du serveur. (dans le php.ini)

et.. à tout hasard.. si tu regardes dans le code source (le code source GENERE )de la page (via ton navigateur, lorsque la page s'affiche... ) si tu ne pourrais pas y voir l'erreur ??
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
30 août 2017 à 16:57
Au pire, vérifie aussi dans le phpinfo les paramètres d'affichage des erreurs php.
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
Modifié le 30 août 2017 à 16:59
Si tu as une erreur de syntaxe php (point virgule manquant par exemple), PHP ne pourra alors pas exécuter ton fichier.
Si tu as activer l'affichage des erreurs dans ce même fichier, alors cette activation ne sera pas prise en compte à cause de l'erreur de syntaxe.

Même si les erreurs ne sont pas affichées (ce qui est mieux si le site est en ligne), elles devraient au moins être enregistrées dans le journal d'erreur de ton serveur web.
0