Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.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数据更新尝试失败_Php_Mysql - Fatal编程技术网

Php mysql数据更新尝试失败

Php mysql数据更新尝试失败,php,mysql,Php,Mysql,我正在开发一个可以让用户相互交流的网站。当用户登录my时,有一个代码将my数据库中的字段login\u status设置为online。这很好用 当用户注销时,问题出现了。我将同一字段设置为脱机,并将注销时间添加到一个字段last\u login。 下面是我的logout.php的代码 session_name("_user");session_start(); $servername = "localhost"; $username = "username"; $password = "pas

我正在开发一个可以让用户相互交流的网站。当用户登录my时,有一个代码将my数据库中的字段
login\u status
设置为online。这很好用

当用户注销时,问题出现了。我将同一字段设置为脱机,并将注销时间添加到一个字段
last\u 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"); 

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

首先,不要手动将SQL查询与不受信任的输入连接起来。这是个坏习惯

让我们把这个放在一边。我发现你的查询是无效的

UPDATE details SET login_status = 'offline' WHERE user_id = '$id
                                                            ^
                                                        there is opening single
                                                        quote without closing
                                                        quote.
你有打字错误

$query = "UPDATE details SET login_status = 'offline' WHERE user_id = '$id";
在上面的一个例子中,您错过了'after$id.将其更改为'after$id'

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

在这两个查询中

您的
查询
似乎有语法错误,请根据需要修改查询

$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";

在您的第二次更新查询中进行了相同的更正。

我将使用
DATETIME
数据类型存储到数据库中,以便最后登录。保存“on”和“at”是没有意义的,只需在打印消息时添加它

只需回显您的
$query
,然后查看如果您在phpMyAdmin中发布查询会发生什么您所说的“不工作”是什么意思?错误?空白值?您没有进行任何错误检查,因此可能会在日志中找到问题。
或die(mysqli_error($conn))
mysqli_query()
。早上好Sam@Jayblanchard你说的@Fred ii this=>“
WHERE user_id=$id”是什么意思“-如果他们的用户id列和cookie是
int
,请确定。否则,它会出错。你是对的,我已经做了必要的更正。你可以在它下面做一个编辑来说明它。你最初的答案可能是正确的,这就是为什么解决两个可能的问题总是好的;坚持问题的真正问题。