如何在更新到数据库时使用php pdo在数字中添加自动inreement(How can i add auto inreement in number using php pdo while upda

编程入门 行业动态 更新时间:2024-10-24 04:33:45
如何在更新到数据库时使用php pdo在数字中添加自动inreement(How can i add auto inreement in number using php pdo while updating to database)

我有这个PHP更新上次登录和登录计数我是它工作时,我只更新上次登录时间,但如果我添加登录计数,它将显示错误。 我希望每当用户注销它将在当前计数中添加+ 1示例最后一次登录计数为3,当注销时它将添加1并更改为4

<?php session_start(); $db_host = "localhost"; $db_user = "root"; $db_pass = "thhdfhhfh"; $db_name = "users"; try { $time = date('Y-m-d h:i:s'); $username = $_SESSION['username']; $db_conn = new PDO("mysql:host={$db_host};dbname={$db_name}",$db_user,$db_pass); $db_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $stmt = $db_conn->prepare("UPDATE users SET lastlogin = :lastlogin, logincount = :logincount + :add WHERE username = '$username'"); $stmt->bindParam(':lastlogin', $time); $stmt->bindParam(':add', 1); $stmt->execute(); session_destroy(); header('location:index.php'); } catch(PDOException $e) { echo "Error:" . $e->getMessage(); } $db_conn = null; ?>

I have this php to update last login and count of login I'm it is working when i update only last login time but if i add the count of login it will show error. I want whenever the user logout it will add + 1 in the current count Example last login count is 3 when logout it will add 1 and change to 4

<?php session_start(); $db_host = "localhost"; $db_user = "root"; $db_pass = "thhdfhhfh"; $db_name = "users"; try { $time = date('Y-m-d h:i:s'); $username = $_SESSION['username']; $db_conn = new PDO("mysql:host={$db_host};dbname={$db_name}",$db_user,$db_pass); $db_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $stmt = $db_conn->prepare("UPDATE users SET lastlogin = :lastlogin, logincount = :logincount + :add WHERE username = '$username'"); $stmt->bindParam(':lastlogin', $time); $stmt->bindParam(':add', 1); $stmt->execute(); session_destroy(); header('location:index.php'); } catch(PDOException $e) { echo "Error:" . $e->getMessage(); } $db_conn = null; ?>

最满意答案

你的问题是这样的:

$stmt = $db_conn->prepare("UPDATE users SET lastlogin = :lastlogin, logincount = :logincount + :add WHERE username = '$username'"); $stmt->bindParam(':lastlogin', $time); $stmt->bindParam(':add', 1);

您的查询中有3个参数: lastlogin , logincount和add 。 虽然您只是初始化lastlogin并add 。

因此, logincount永远不会被初始化。

由于您总是将计数增加1,请尝试以下方法:

$stmt = $db_conn->prepare("UPDATE users SET lastlogin = :lastlogin, logincount = logincount + 1 WHERE username = '$username'"); $stmt->bindParam(':lastlogin', $time);

作为旁注:当您使用username = '$username'将用户名直接解析到查询中时,您有点想要使用预准备语句。

你还应该使用一个参数:

$stmt = $db_conn->prepare("UPDATE users SET lastlogin = :lastlogin, logincount = logincount + 1 WHERE username = :username"); $stmt->bindParam(':lastlogin', $time); $stmt->bindParam(':username', $username);

Your problem is this:

$stmt = $db_conn->prepare("UPDATE users SET lastlogin = :lastlogin, logincount = :logincount + :add WHERE username = '$username'"); $stmt->bindParam(':lastlogin', $time); $stmt->bindParam(':add', 1);

You have 3 parameters in your query: lastlogin, logincount and add. While you are only initializing lastlogin and add.

So, logincount is never initialized.

Since you are always increment your count by 1, try this:

$stmt = $db_conn->prepare("UPDATE users SET lastlogin = :lastlogin, logincount = logincount + 1 WHERE username = '$username'"); $stmt->bindParam(':lastlogin', $time);

As a side note: you are kind of killing the idea of using prepared statements when you parse your username directly into the query with username = '$username'.

You should also use a parameter for that:

$stmt = $db_conn->prepare("UPDATE users SET lastlogin = :lastlogin, logincount = logincount + 1 WHERE username = :username"); $stmt->bindParam(':lastlogin', $time); $stmt->bindParam(':username', $username);

更多推荐

本文发布于:2023-07-23 18:30:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1235592.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:新到   数据库   数字   如何在   number

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!