Bonjour,
J'essaye d'enregistrer une ip dans ma BDD lorsqu'un utilisateur se connecte, mais j'ai un problème avec la fonction execute()
Voici le code !
<?php
$ip = $_SERVER['REMOTE_ADDR'];
$db = mysqli_connect('localhost', 'root', 'Administrateur29', 'test');
$req = "UPDATE users SET ip=$ip WHERE id=$username";
$update = $db->prepare($requete);
$result = $update->execute();

$stmt = $db->prepare($requete);
$stmt->bindValue('$username');
$result = $stmt->execute();
$data = $stmt->fetch();
?>
En vous remerciant d'avance.

13 réponses


Vallyan
Réponse acceptée

On se calme peut-etre un peu, les integristes du PHP, avant de fondre sur le malheureux développeur amateur comme une tribue de morpions sur un puceau dans une maison close

@François Cammas:

  • Tu utilise une connexion mysqli avec un traitement de la requête en objet . ça peut pas marcher !
  • Soit Tu utilises la PDO tout le temps soit jamais
  • Ou tiens je vais tenter la PDO Ca a l'air bien ?

Selon la doc :
mysqli_connect
(PHP 5)
mysqli_connect — Alias de mysqli::__construct()

... Je me plante probablement, mais ca ressemble furieusement a de l'orienté objet, cette classe mysqli ... non ?

@Azalpher: Essaye un truc du genre de ceci. A débugger éventuellement, je le fais de tête.

<?php
$db = mysqli_connect('localhost', 'root', 'Administrateur29', 'test');

// Username à instancier
$stmt = $db->prepare("UPDATE users SET ip=? WHERE id=?");
$stmt->bind_param( $_SERVER['REMOTE_ADDR'], $username );
$stmt->execute();
$stmt->close();
// Il n'y a rien à "fetch" puisque tu fais un UPDATE et non un SELECT
?>

"ai un problème avec la fonction execute()"

Oui et quel est le problème ? XD

Ton code est très bizarre...
Dans tous les cas cela ne peux pas fonctionner:

$req = "UPDATE users SET ip=$ip WHERE id=$username";
$update = $db->prepare($requete); // il vient d'ou le $requete ?

De plus tu utilise des prepared query sans aucun bind. Cela ne sert a rien.
Donc je pense que tu devrai revoir un petit tuto: http://openclassrooms.com/courses/maitrisez-mysqli-sans-poo

Voila voila ;)

Comme l'a dit Hannibal, d'où provient ta variable? Tu nous a mis qu'un fragement de code? :/

L'erreur retournée serait pas mal pour commencer ;)

Azalpher
Auteur

L'erreur est "Fatal error: call function execute() on a non-object" :/

Bonjour,

Comme dit précédemment, $requete est une variable inconnu.
En corrigeant $req par $requete, cela devrait corriger votre problème.

ta variable que t'essaies d'envoyer n'existe pas. Lis les erreurs avant de venir sur un forum. a+

On dirait des bouts de codes glanné ici et là ...

Et alors ! On a tous débuter un jour. Pas la peine de le prendre pour un c##....
Vu vos critiques, je ne m'étonnerai pas qu'il ne revienne jamais sur le forum.

Cool les mecs

@Vallyan tant qu'à faire bind aussi username on ne sais pas comment il est récup donc autant le protéger aussi

'ffectivement, j'ai édité le post précédent ...

J'ai retiré mes posts. Je sais c'est pas bien ce que j'ai fait. Surtout quand j'ai tort !!!