mysql数据更新尝试失败

时间:2015-04-09 12:09:49

标签: php mysql

我正在开发一个让用户互相交流的网站。当用户登录我的数据库时,有一个代码将字段login_status设置为联机。这很好。

当用户注销时出现问题我将相同的字段设置为离线,并在字段last_login中添加注销时间。 以下是我的 logout.php

的代码
session_name("_user");session_start();
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$id = $_COOKIE['_d']; //this cookie has the user  id of the user

// set user offline     
$query = "UPDATE details SET login_status = 'offline' WHERE user_id = '$id";    
$update = mysqli_query($conn, $query); //not working

// set last login
$time = date("h:i:sa");
$date = date("d-m-Y");
$last = "on ". $date." at". $time;

$query = "UPDATE details SET last_login = '$last' WHERE user_id = '$id";    
$update = mysqli_query($conn, $query); // not working


// Unset all session values 
$_SESSION = array();

// get session parameters 
$params = session_get_cookie_params();

// Delete the actual cookie. 
setcookie(session_name(),'', time() - 42000, $params["path"], $params["domain"], $params["secure"], $params["httponly"]);

$past = time() - 100;

setcookie('_d', 'deleted', $past);
setcookie('_user', 'deleted', $past);
setcookie('uid', 'deleted', $past);
setcookie('_vip', 'deleted', $past);
setcookie('_status', 'deleted', $past);
setcookie('_edit', 'deleted', $past);

// Destroy session 
session_destroy();

header("Location: login?status=logout%20sucessful"); 

这两个查询都不起作用,并且不会更新我的表格详细信息。我犯的错误是什么。

4 个答案:

答案 0 :(得分:2)

首先,不要手动将SQL查询与不受信任的输入连接起来。这是不好的做法。

我们把它放在一边。我发现您的查询无效。

UPDATE details SET login_status = 'offline' WHERE user_id = '$id
                                                            ^
                                                        there is opening single
                                                        quote without closing
                                                        quote.

答案 1 :(得分:2)

您有拼写错误

$query = "UPDATE details SET login_status = 'offline' WHERE user_id = '$id";

在上面的一个中,你错过了'after $ id。将其更改为

 $query = "UPDATE details SET login_status = 'offline' WHERE user_id = '$id'";
两个查询中的

答案 2 :(得分:1)

您的query似乎有语法错误,因此请将您的查询修改为

$query = "UPDATE details SET login_status = 'offline' WHERE user_id = '$id'";  // modify single quote from $id

而不是

$query = "UPDATE details SET login_status = 'offline' WHERE user_id = '$id";

第二次更新查询中的相同更正。

答案 3 :(得分:0)

我会将DATETIME数据类型用于数据库以存储lastlogin。没有意义保存" on"和"在",只需在打印消息时添加