Requete UPDATE avec PDO fonctionnelle en local mais pas sur OVH
Bonjour à tous et toutes,
Je viens quémander un peu d'aide pour un soucis que je n'arrive pas à identifier.
J'ai une fonction qui active un compte dans la BDD selon les paramètres reçus.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| function activationMembreBDD($email, $cle)
{
//
$sqlData = array();
$validate = 1;
//
$oPDO = getBDD();
// La requete
$sqlCheck="UPDATE `users`
SET
`user_valide` = :validate
WHERE
`user_mail` = :mail AND `user_cle` = :clef";
try
{
$prep = $oPDO->prepare($sqlCheck);
$prep->bindValue(':validate', $validate, PDO::PARAM_INT);
$prep->bindValue(':mail', $email, PDO::PARAM_STR);
$prep->bindValue(':clef', $cle, PDO::PARAM_STR);
$prep->execute();
$infoNbLigne = $prep->rowCount(); // Nombre de ligne affectee, on sait ainsi, si la requete a fonctionne ou pas
$sqlData['Messages'][] = array(
'status' => "La requete a reussi.",
'nbLigne' => $infoNbLigne
);
}
catch(Exception $e)
{
$sqlData['Messages'] = "La requete a rencontre un soucis. "."ERREUR PDO dans " . $e->getFile() . " L." . $e->getLine() . " : " . $e->getMessage();; // C_est pour gerer les erreurs en mode DEBUG.
}
// on ferme le curseur des resultats, une fois termine notre traitement.
$prep->closeCursor();
// On vide
$prep = NULL;
// On renvoi le resultat. Boucle foreach pour l_exploiter dans la page appelante.
return $sqlData;
} |
Ca fonctionne très bien en local sur WAMP Server version 2.5.
Sur mon hébergement mutualisé OVH, la requête s'exécute bien, mais MySQL retourne 0 ligne affectée. Et donc ma fonction plante systématiquement.
J'ai fais plein de tests en passant par l'interface phpmyadmin, mais je tourne en rond.
:: VERSIONS PHP et MySQL EN LOCAL AVEC WAMP SERVER ::
Version PHP : 5.5.12
Version MySQL : 5.6.17
:: VERSION CHEZ OVH ::
Version PHP : 5.4.34
Version MySQL : 5.1.73
Un autre regard verra peut-être ce que je ne vois pas.
La structure de ma table SQL
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| CREATE TABLE IF NOT EXISTS `users` (
`user_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`user_nom` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`user_prenom` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`user_adresse` varchar(256) COLLATE utf8_unicode_ci NOT NULL,
`user_cp` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
`user_ville` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`user_telFixe` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`user_telMob` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`user_mail` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`user_pass` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`user_groupeID` int(3) NOT NULL,
`user_valide` int(3) DEFAULT NULL COMMENT 'Passe a 1 une fois le mail de validation active',
`user_cle` varchar(200) COLLATE utf8_unicode_ci NOT NULL COMMENT 'Cle aleatoire generee lors de l''inscription',
`date_inscription` datetime NOT NULL,
`last_connected` datetime DEFAULT NULL COMMENT 'Date de la derniere connexion au site',
`user_status` int(3) NOT NULL COMMENT '0 ou 1, selon que l''on soit en ligne ou pas',
`user_ip` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Adresse IP du client lors de la connexion au site',
`user_domaine` varchar(256) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Domaine du client lors de la connexion au site',
`user_browser` varchar(256) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Navigateur du client lors de la connexion au site',
PRIMARY KEY (`user_id`),
UNIQUE KEY `user_mail` (`user_mail`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=13 ; |
Merci d'avance à ceux/celles qui se pencheront sur mon soucis.
Cordialement,
Micky