Problème mise a jour datetime [Résolu/Fermé]

flo39400 586 Messages postés mardi 8 avril 2008Date d'inscription 10 décembre 2017 Dernière intervention - 11 oct. 2016 à 21:10 - Dernière réponse : flo39400 586 Messages postés mardi 8 avril 2008Date d'inscription 10 décembre 2017 Dernière intervention
- 13 oct. 2016 à 17:09
Bonjour,

J'ai un petit problème pour mettre a jour le datetime dans ma base de donnée.
Si vous pouvez m'apporter un peu d'aide merci d'avance.


<?php
$user_ip = $_SERVER['REMOTE_ADDR'];
$datetime = date("Y-m-d H:i:s");

$req_ip_exist = $bdd->prepare('SELECT * FROM bann_ip WHERE uttilisateur_ip = ?');
$req_ip_exist->execute(array($user_ip));
$ip_existe = $req_ip_exist->rowCount();

if($ip_existe == 0)
{
	$add_ip = $bdd->prepare('INSERT INTO bann_ip(uttilisateur_ip, date_time_co) VALUES(?, NOW())');
	$add_ip->execute(array($user_ip));
}
else
{
	$update_ip = $bdd->prepare('UPDATE bann_ip SET date_time_co = ? WHERE user_ip = ?');
	$update_ip->execute(array($datetime));
/* Problème pour inscrire la nouvelle datetime dans la bdd */
}



?>



code erreur visible: Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in C:\wamp64\www\site\bann_ip.php on line 17

Afficher la suite 
586Messages postés mardi 8 avril 2008Date d'inscription 10 décembre 2017 Dernière intervention

8 réponses

jordane45 19207 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 11 décembre 2017 Dernière intervention - 11 oct. 2016 à 23:44
0
Utile
7
Bonjour

Deux "?" ... et une seule variable dans le exeecute
jordane45 19207 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 11 décembre 2017 Dernière intervention - 13 oct. 2016 à 08:35
Tu as corrigé ton code suite à ma réponse ?
flo39400 586 Messages postés mardi 8 avril 2008Date d'inscription 10 décembre 2017 Dernière intervention - 13 oct. 2016 à 16:20
Voila ma mise a jour, je n'est pu de code d'erreur mais le datetime ne ce met pas a jour voila:

else
{
	$update_ip = $bdd->prepare('UPDATE bann_ip SET (date_time_co WHERE user_ip) VALUES(NOW(), ?)');
	$update_ip->execute(array($datetime));
}
flo39400 586 Messages postés mardi 8 avril 2008Date d'inscription 10 décembre 2017 Dernière intervention - 13 oct. 2016 à 16:24
Donc vraiment je sais pas doit exécuter comme variable pour mettre a jour l'heur et la date réellement.
ok la fonction NOW() SQL toute prête mais quel variable exécuter pour lancer le UPDATE dans la base de donnée. Vu que seule la variable de temps est modifier, via NOW() donc ma variable $datetime ne sert a rien dans ce cas précis mais alors comment faire pour exécuter ce code....
jordane45 19207 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 11 décembre 2017 Dernière intervention > flo39400 586 Messages postés mardi 8 avril 2008Date d'inscription 10 décembre 2017 Dernière intervention - 13 oct. 2016 à 16:49
Tu as un problème dans l'écriture de ta requête....
Essayes ça :
       $sql = 'UPDATE bann_ip SET date_time_co = NOW() WHERE user_ip = :ip'
       $datas = array(":ip"=>$user_ip);
     try{
	$update_ip = $bdd->prepare($sql);
	$update_ip->execute($datas );
      }catch (Exception $e){
        echo "Erreur : ".$e->getMessage();
      }

Au passage.... Active la gestion des erreurs PDO : http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs
flo39400 586 Messages postés mardi 8 avril 2008Date d'inscription 10 décembre 2017 Dernière intervention - 13 oct. 2016 à 17:09
Bonjour voila le code modifier qui fonctionne je vais pouvoir avancer :)
Merci a vous pour votre aide.

 

<?php
$user_ip = $_SERVER['REMOTE_ADDR'];


$req_ip_exist = $bdd->prepare('SELECT * FROM bann_ip WHERE uttilisateur_ip = ?');
$req_ip_exist->execute(array($user_ip));
$ip_existe = $req_ip_exist->rowCount();

if($ip_existe == 0)
{
	$add_ip = $bdd->prepare('INSERT INTO bann_ip(uttilisateur_ip, date_time_co) VALUES(?, NOW())');
	$add_ip->execute(array($user_ip));
}
else
{
	$update_ip = $bdd->prepare('UPDATE bann_ip SET date_time_co = NOW() WHERE uttilisateur_ip = ?');
	$update_ip->execute(array($_SERVER['REMOTE_ADDR']));
} 



?>