Signaler

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

Posez votre question flo39400 352Messages postés mardi 8 avril 2008Date d'inscription 22 novembre 2016 Dernière intervention - Dernière réponse le 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 
Utile
+0
moins plus
Bonjour

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



?>

 

 
Répondre
Ajouter un commentaire

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !