我正在尝试进行一个简单的查询,它会根据用户上次登录的时间更新用户数据库。我的SQL数据库有几列id | first_name | last_name | username| password | date_created | last_login
我正在尝试运行的查询是:
$sql="INSERT INTO (CLL_users) SET last_login= $dateCreated WHERE username= $username";
$result=mysql_query($sql);
以下是成功验证后加载的页面的完整代码,我确实认识到它是因为SQL注入而使用的最糟糕的方法,但是一旦我得到正确的查询,我将为PDO预处理语句重新编码它这只是一个例子我在另一个网站上找到了,我正在修改它以添加last_login参数。
<?php
session_start();
$host="localhost"; // Host name
$username="user"; // Mysql username
$password="XXXXX"; // Mysql password
$db_name="DB"; // Database name
$tbl_name="users"; // Table name
date_default_timezone_set('America/Chicago');
$dateCreated = date('m/d/Y h:i:s a', time());
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$sql="INSERT INTO (CLL_users) SET last_login= $dateCreated WHERE username= $username";
$result=mysql_query($sql);
if(!session_is_registered(myusername)){
header("location:main_login.php");
}
?>
<html>
<head>
<title> Welcome</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<LINK href="CLL.css" rel="stylesheet" type="text/css">
</head>
<body>
<?php echo $dateCreated ?>
<p>Login Successful</p>
</body>
</html>
答案 0 :(得分:3)
$sql="update CLL_users SET last_login= $dateCreated WHERE username= $username";
$result=mysql_query($sql);
答案 1 :(得分:2)
您需要在dateCreated和用户名变量周围使用单引号。
此外,您需要使用update语句来更新现有记录而不是执行插入操作。 如果您回显$ sql变量,您将看到您的insert语句无效,如果您尝试在数据库上手动运行它将无法工作。
例如。 $sql="UPDATE CLL_users SET last_login='$dateCreated' WHERE username='$username'";
答案 2 :(得分:2)
您无法使用INSERT更新表中的现有记录。使用UPDATE查询
$sql="UPDATE CLL_users SET last_login= '$dateCreated' WHERE username= '$username'";
答案 3 :(得分:2)
首先,我建议用单引号用变量包围变量,接下来我建议您使用以下语法进行插入。 INSERT INTO表(COLUMN1,COLUMN2,COLUMN3)VALUES('value1','value2','value3')
如果你想要的是更新行而不是插入一些内容,也可以将INSERT INTO替换为UPDATE。
答案 4 :(得分:2)
错误原因是,如果要更新表,则没有带有Set选项的insert查询,请按照以下步骤进行sql变量
$sql = "UPDATE CLL_users SET last_login= '$dateCreated' WHERE username='$username'";