【发布时间】:2014-10-21 18:28:43
【问题描述】:
我在提交表单后收到此错误。由于我还没有过多地使用 PDO,所以我的代码可能有明显的错误。它旨在用表单数据更新表格并读取它。我该如何解决?
错误:SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在 'UPDATE edit SET content=':bodyBackgroundColour' WHERE id='bodyBackgroundColour';' 附近使用正确的语法在第 2 行
try
{
$database = new PDO ('mysql:host=localhost;dbname=youdonotneedtoknow;charset=utf8', 'youdonotneedtoknow', 'youdonotneedtoknow');
$database -> setAttribute (PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$database -> setAttribute (PDO::ATTR_EMULATE_PREPARES, false);
//Update
if (!empty ($_POST))
{
$statement = $database -> prepare ("
UPDATE edit SET content=':windowTitle' WHERE id='windowTitle';
UPDATE edit SET content=':bodyBackgroundColour' WHERE id='bodyBackgroundColour';
UPDATE edit SET content=':divisionBackgroundColour' WHERE id='divisionBackgroundColour';
");
$statement -> execute (array (
':windowTitle' => $_POST ['windowTitle'],
':bodyBackgroundColour' => $_POST ['bodyBackgroundColour'],
':divisionBackgroundColour' => $_POST ['divisionBackgroundColour'],
));
}
}
catch (PDOException $exception)
{
die ('Error: ' . $exception -> getMessage () . '<br><br>' . 'Por favor diríjase a "index.php" en este mismo directorio y contacte a su administrador.');
}
【问题讨论】:
-
+1 你不需要知道
-
删除占位符周围的引号。占位符在内部进行解析,并在必要时为字符串等添加引号。
-
你确定
:bodyBackgroundColour的值不为空吗? -
您关闭了
PDO::ATTR_EMULATE_PREPARES,但尝试准备多个查询。见this。 -
@PrabowoMurti 我很确定不是。