我盯着这个语句和它的错误信息看了大约半个小时,却看不出它有什么问题。
这是我的声明:
try{
$stmt = $conn->prepare("INSERT INTO dashboardsearchdates (userID, from, to) VALUES (?,?,?)");
$result = $stmt->execute(array($userID, $frmFrom, $frmTo));
}
catch(PDOException $e){
echo 'ERROR: ' . $e->getMessage();
$queryString = $stmt->queryString;
$page = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
mail(ADMIN_EMAIL, 'SQL ERROR: ' . $page, 'Error Page: ' . $page . ' // Error: ' . $e->getMessage() . ' // Query String: ' . $queryString);
}
这是我试图将值插入的表结构:
Table structure for table `dashboardsearchdates`
--
CREATE TABLE IF NOT EXISTS `dashboardsearchdates` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`userID` int(11) NOT NULL,
`from` datetime NOT NULL,
`to` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
这是我看到的异常:
ERROR: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from, to) VALUES ('9','2012-12-12','2013-01-01')' at line 1
正如您从异常中看到的那样,我尝试插入数据库的三个值在运行时存在(否则它们不会显示在异常中)
我尝试过的事情:
我$conn
在代码中使用了上面的其他查询,所以我知道$conn
它存在并且正在工作。
我已将声明改写为:
$stmt = $conn->prepare("INSERT INTO dashboardsearchdates (userID, from, to) VALUES (:userID,:from,:to)");
$stmt->bindParam(':userID', $userID);
$stmt->bindParam(':from', $frmFrom);
$stmt->bindParam(':to', $frmTo);
$result = $stmt->execute();
我已经尝试在表名、所有字段名、只有整数字段名和只有日期字段周围使用反引号。所有都带有上面显示的相同错误消息 - 据我所知,构造没有任何问题SQL。
对于其他尝试的任何建议,我将不胜感激。