【发布时间】:2014-09-25 21:07:15
【问题描述】:
我一直在尝试获取一个表单,以便使用表单将记录插入 MySQL 数据库,但由于某种原因,它在我身上出错,我不知道为什么。
这是处理请求的代码:
if ($_SERVER['REQUEST_METHOD']=='POST'){
// database connection
try {
$dbh = new PDO('mysql:host='.$host.';dbname='.$dbName, $dbUser, $dbPass);
$dbh -> setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$dbh -> exec("SET NAMES 'utf8'");
} catch (Exception $e) {
echo "Error!: " . $e->getMessage() . "<br/>";
die();
}
// new data
$title = $_POST["txtTitle"];
$description = $_POST["txtDesc"];
$content = $_POST["txtContent"];
$sql = "INSERT INTO tblPageContent
SET (PageTitle, Description, PageContent)
VALUES (:title, :desc, :content)";
try {
$update = $dbh->prepare($sql);
$update->bindParam(":title",$title, PDO::PARAM_STR);
$update->bindParam(":desc",$description, PDO::PARAM_STR);
$update->bindParam(":content",$content, PDO::PARAM_STR);
$update->execute();
$id = $update->dbh->lastInsertId();
$update->dbh->commit();
echo $id;
} catch (Exception $e) {
echo "Data could not be updated in the database.";
echo $e;
exit;
}
}
每当我尝试使用它时,我都会得到这样的结果:
带有消息“SQLSTATE[42000]”的异常“PDOException”:语法错误 或访问冲突:1064 您的 SQL 语法有错误;查看 与您的 MySQL 服务器版本相对应的手册 '(PageTitle, Description, PageContent) VALUES 附近使用的语法 ('Awards', 'This is a test', '' at line 2'
我已尝试调整 SQL 语法,但仍无法正常工作。我这里有什么遗漏吗?
【问题讨论】:
-
INSERT INTO tblPageContent (PageTitle, Description, PageContent) VALUES (:title, :desc, :content)或INSERT INTO tblPageContent SET PageTitle = :title, Description = :desc, PageContent = :content -
请不要将代码转储到 cmets 中。
-
@JayBlanchard 这是对我的评论吗?如果是这样,这个问题是一个基本的语法错误,如果 OP RTM - dev.mysql.com/doc/refman/5.6/en/insert.html AND 应该被关闭,这个问题就会得到解决,所以不值得创建一个答案。
-
这是您的电话@Sean,但 cmets 中的代码转储很难阅读,并且缺乏空间来阐述您所做的事情。 YMMV¯_(ツ)_/¯
-
@JayBlanchard 这可能是真的,但在这个例子中我放了 2 个简单的 mysql 查询,而不是复杂的连接,甚至是 php 代码。