Php mysql表字段-资源id 7
我在数据库中有下表:Php mysql表字段-资源id 7,php,mysql,Php,Mysql,我在数据库中有下表: id, username, email, old_ip, current_ip 每次用户登录时,我都希望他们的当前ip存储在当前ip中。但在此之前,我想保存他们上次登录时的旧ip,这样我就可以在将新数据复制到当前ip之前,将当前ip中的内容移动到旧ip 我在登录时编写了以下脚本: ........ $sql = mysql_query("SELECT * FROM members WHERE email='$email' AND password='$password'"
id, username, email, old_ip, current_ip
每次用户登录时,我都希望他们的当前ip存储在当前ip中。但在此之前,我想保存他们上次登录时的旧ip,这样我就可以在将新数据复制到当前ip之前,将当前ip中的内容移动到旧ip
我在登录时编写了以下脚本:
........
$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'");
}
我在旧的ip字段中得到的结果是资源id 7。请提供任何帮助?您必须首先从选择中获取结果
顺便说一下,您可以在一个查询中执行此操作:
更新成员集旧\u ip=当前\u ip,当前\u ip=“$newip”,其中id=$id
不要使用,它已被弃用。您必须先选择结果
顺便说一下,您可以在一个查询中执行此操作:
更新成员集旧\u ip=当前\u ip,当前\u ip=“$newip”,其中id=$id
不要使用,它已被弃用。更正:
...
// IP getting
$old_ip = mysql_query("SELECT current_ip FROM members WHERE id='$id'");
list($result_old_ip) = mysql_fetch_row($old_ip);
...
但是,这没有错误检查,也没有代码的其余部分,因此请在后面阅读如何保护SQL注入并插入一些错误检查。更正:
...
// IP getting
$old_ip = mysql_query("SELECT current_ip FROM members WHERE id='$id'");
list($result_old_ip) = mysql_fetch_row($old_ip);
...
但是,这没有错误检查,也没有代码的其余部分,因此请在后面阅读如何保护SQL注入并插入一些错误检查。mysql\u query语句返回指向结果集的资源指针,而不是数据本身。您需要使用mysql\u fetch\u数组来检索表中的实际数据
像这样:
$old_ip = mysql_query("SELECT current_ip FROM members WHERE id='$id'");
$row = mysql_fetch_array($old_ip);
$result_old_ip = $row['current_ip'];
这会解决你的问题
希望这有帮助。mysql\u查询语句返回指向结果集的资源指针,而不是数据本身。您需要使用mysql\u fetch\u数组来检索表中的实际数据
像这样:
$old_ip = mysql_query("SELECT current_ip FROM members WHERE id='$id'");
$row = mysql_fetch_array($old_ip);
$result_old_ip = $row['current_ip'];
这会解决你的问题
希望这有帮助。你用正确的语法运行一个选择查询,只有十行向上……你用正确的语法运行一个选择查询,只有十行向上……欢呼,是的,我应该考虑更多的安全性。我打算花更多的时间在这个谢谢大家,是的,我应该考虑安全多一点。我打算花更多的时间在这上面谢谢