我有一个登录脚本,我在其中执行查询以记录人们尝试登录我的网站的时间和地点。这段小代码不会返回任何错误,并且标头可以正常工作,但查询由于某种原因不起作用。有谁知道我做错了什么?
if($count==1){
$securityquery = "INSERT INTO security_kk (action,datetime,country,IP,Affected table,comment) VALUES (:action,:datetime,:country,:IP,:Affected_table,:comment)";
$q = $db->prepare($securityquery);
$q->execute(array(':action'=>"Login",
':datetime'=>$datetime,
':country'=>$country,
':IP'=>$_SERVER['REMOTE_ADDR'],
':Affected_table'=>"members",
':comment'=>"Authenticated as ".$myusername));
$_SESSION['username'] = $myusername;
$_SESSION['privileges'] = $row['privileges'];
$_SESSION['email'] = $row['email'];
header("location:index.php");
}
我是PDO的初学者,但因为没有错误。我不知道在哪里看。
答案 0 :(得分:4)
datetime
是MySQL中的数据类型。用刻度线包裹该列标识符。此外,名称中带有空格的列标识符必须用刻度表包装。
$securityquery = "INSERT INTO security_kk (`action`,`datetime`,`country`,`IP`,`Affected table`,`comment`) VALUES (:action,:datetime,:country,:IP,:Affected_table,:meta)";
答案 1 :(得分:2)
您的错误(或可能是其中一个错误)是
之间的区别:meta // your query contains this
和
':comment'=>"Authenticated as ".$myusername;
您的数组没有名为:meta
使用错误检查功能检查错误并不会造成伤害,而不是让其他人试图找出一个简单的拼写错误。
虽然没有任何错误
因为你没有检查它们。
答案 2 :(得分:0)
如下使用的最佳方式。
$securityquery = "INSERT INTO security_kk (action,[datetime],country,IP,Affected table,comment) VALUES (:action,:datetime,:country,:IP,:Affected_table,:meta)";