table mysql champs - Ressource id #7
J'ai le tableau suivant dans la base de données:
id, username, email, old_ip, current_ip
Chaque fois que l'utilisateur se connecte, je veux leur ip pour être stockées dans current_ip. Mais avant cela, je voudrais sauver leur old_ip (à partir de la dernière connexion) j'ai donc pensé que je pourrais passer ce qui est en current_ip à old_ip avant de copier les nouvelles données à current_ip.
J'ai écrit ce script lors de la connexion:
........
$sql = mysql_query("SELECT * FROM members WHERE email='$email' AND password='$password'");
$login_check = mysql_num_rows($sql);
if($login_check > 0){
while($row = mysql_fetch_array($sql)){
//Get member ID into a session variable
$id = $row["id"];
session_register('id');
$_SESSION['id'] = $id;
//Get member username into a session variable
$username = $row["username"];
session_register('username');
$_SESSION['username'] = $username;
//IP getting
$old_ip = mysql_query("SELECT current_ip FROM members WHERE id='$id'");
$result_old_ip = $old_ip;
$sql_setoldip = mysql_query("UPDATE members SET old_ip='".$result_old_ip."' WHERE id='$id'");
$getip = getenv("REMOTE_ADDR");
$current_ip = $getip;
//Update ip in database
mysql_query("UPDATE members SET current_ip='".$current_ip."' WHERE id='$id'");
}
Le résultat que j'obtiens dans le old_ip feild est "Resource id #7" Toute aide, s'il vous plaît ?
- Vous exécutez une requête SELECT avec la syntaxe correcte juste une dizaine de lignes vers le haut...
Vous devez vous connecter pour publier un commentaire.
mysql_query()
instruction retourne une ressource de pointeur pour le jeu de résultats, et non les données. Vous aurez besoin d'utilisermysql_fetch_array()
afin de récupérer les données dans la table.comme ceci:
cela permettra de résoudre votre problème.
Espère que cette aide.
Vous avez à fetch le résultat de votre
select
premier.Vous pouvez par la façon de le faire en une seule requête:
UPDATE members SET old_ip = current_ip, current_ip = '$newip' WHERE id= $id
Et n'utilisez pas
session_register
, c'est obsolète.Correction:
Toutefois, cela n'a pas de contrôle d'erreur, aussi dans le reste du code, lisez donc après, comment la protéger contre l'injection SQL et insérer la vérification d'erreur.