[RESOLU] UPDATE n'update rien du tout et ne retourne pas d'erreur !

Eléphanteau du PHP | 10 Messages

28 janv. 2019, 22:17

Bonsoir,
J'ai tenté toutes les façon de faire...de la plus simple (proche de l'ancienne version php) à la plus "complexe"... rien ne se met à jour...
J'ai un require en début de page pour la connexion pdo (je l'utilise dans toutes les pages sans problème).

//Récup variables
$idal = $_POST['idal'];
$siten = addslashes($_POST['siten']);
$localn = addslashes($_POST['localn']);
$descrn = addslashes($_POST['descrn']);
$vmailn = $_POST['vmailn'];
$vsmsn = $_POST['vsmsn'];
$vvocaln = $_POST['vvocaln'];
//Version 1
$envoi=$pdo->prepare("UPDATE table SET site = :site, local = :vlocal, description = :vdesc, vmail = :vmail, vsms = :vsms, vvocal = :vvocal WHERE id =:id")->execute(['site' => $siten, 'local' => $localn, 'vdesc' => $descn, 'vmail' => $vmailn, 'vsms' => $vsmsn, 'vvocal' => $vvocaln, 'id' => $idal]);

//Version 2
$sql = "UPDATE aallalarmes SET site=?, local=?, description=?, vmail=?, vsms=?, vvocal=? WHERE id=?";
$pdo->prepare($sql)->execute([$siten, $localn, $descrn, $vmailn, $vsmsn, $vvocaln, $idal]);

//Version 3 avec et sans quote 
$req = $pdo->prepare("UPDATE `aallalarmes` SET `site` = '$siten', `local` = '$localn', `description` = '$descrn', `vmail` = '$vmailn', `vsms` = '$vsmsn', `vvocal` = '$vvocaln' WHERE `aallalarmes`.`id` = '$idal'");
$req = $pdo->prepare("UPDATE aallalarmes SET site='$siten', local='$localn', description='$descrn', vmail='$vmailn', vsms='$vsmsn', vvocal='$vvocaln' WHERE id='$idal'");
$req = $pdo->prepare("UPDATE aallalarmes SET site=$siten, local=$localn, description=$descrn, vmail=$vmailn, vsms=$vsmsn, vvocal=$vvocaln WHERE id=$idal");
$req->execute();

//Version 4
$data = [
    'idal' => $_POST['idal'],
    'siten' => addslashes($_POST['siten']),
    'localn' => addslashes($_POST['localn']),
    'descrn' => addslashes($_POST['descrn']),
    'vmailn' => $_POST['vmailn'],
    'vsmsn' => $_POST['vsmsn'],
    'vvocaln' => $_POST['vvocaln'],
];

//$sql = "UPDATE table SET site=:siten, local=:localn, description=:descrn, vmail=:vmailn, vsms=:vsmsn, vvocal=:vvocaln WHERE id=:idal";
//$pdo->prepare($sql)->execute($data);
Je précise que j'ai testé toutes les méthode séparément bien entendu... je préfère toujours la version 3 car plus lisible (ancienne version php reste dans les habitudes)...

Merci pour votre regard avisé... je dois passer à côté de quelque chose mais ça doit tellement crever l'écran que je le vois plus !

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

29 janv. 2019, 10:42

Ça pourrait être utile de vérifier que tes requêtes se soient exécutées correctement non ? ;-)
https://openclassrooms.com/fr/courses/1 ... /r-1262746
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 10 Messages

29 janv. 2019, 18:05

PDO::errorCode(): 00000

The PDO error code 00000 means that everything works fine

C'est rageant ! Pas moyen d'obtenir la raison qui fait que l'UPDATE ne se fait pas...

Eléphanteau du PHP | 10 Messages

29 janv. 2019, 18:12

Array ( [0] => 00000 [1] => [2] => )
Mais cela ne me donne toujours pas d'info concrète...
Sans PDO, ça fonctionne bien, mais dès que c'est en prod, ça plante !

Eléphanteau du PHP | 10 Messages

29 janv. 2019, 19:18

Trouvé !!! Un bête " qui avait disparu et un des champs POST n'était pas passé... bein entendu un champ indispensable !!! Deux jours que je suis dessus... même avec les codes d'erreurs, rien à faire, il faisait comme si tout allait bien !

Finalement, j'ai fait un echo de toutes les valeurs pour tester et j'ai trouvé celle qui manquait !

Bonne soirée !