Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql表字段-资源id 7_Php_Mysql - Fatal编程技术网

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'];
这会解决你的问题


希望这有帮助。

你用正确的语法运行一个选择查询,只有十行向上……你用正确的语法运行一个选择查询,只有十行向上……欢呼,是的,我应该考虑更多的安全性。我打算花更多的时间在这个谢谢大家,是的,我应该考虑安全多一点。我打算花更多的时间在这上面谢谢