Menu

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

flo39400 589 Messages postés mardi 8 avril 2008Date d'inscription 8 février 2018 Dernière intervention - 11 oct. 2016 à 21:10 - Dernière réponse : flo39400 589 Messages postés mardi 8 avril 2008Date d'inscription 8 février 2018 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 

8 réponses

jordane45 20089 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 24 février 2018 Dernière intervention - 11 oct. 2016 à 23:44
0
Utile
7
Bonjour

Deux "?" ... et une seule variable dans le exeecute
jordane45 20089 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 24 février 2018 Dernière intervention - 13 oct. 2016 à 08:35
Tu as corrigé ton code suite à ma réponse ?
flo39400 589 Messages postés mardi 8 avril 2008Date d'inscription 8 février 2018 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 589 Messages postés mardi 8 avril 2008Date d'inscription 8 février 2018 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 20089 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 24 février 2018 Dernière intervention > flo39400 589 Messages postés mardi 8 avril 2008Date d'inscription 8 février 2018 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 589 Messages postés mardi 8 avril 2008Date d'inscription 8 février 2018 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']));
} 



?>