Php mysql数据更新尝试失败
我正在开发一个可以让用户相互交流的网站。当用户登录my时,有一个代码将my数据库中的字段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
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
,请确定。否则,它会出错。你是对的,我已经做了必要的更正。你可以在它下面做一个编辑来说明它。你最初的答案可能是正确的,这就是为什么解决两个可能的问题总是好的;坚持问题的真正问题。