这个问题已经在这里有了答案 :
由于在MySQL中使用保留字作为表或列名而导致的语法错误 (1个答案)
3年前关闭。
我已经浏览了所有其他StackOverflow(和Google)中相同问题的帖子,但似乎都没有解决我的问题。
我正在使用PDO和PHP。
我的html" target="_blank">代码:
$vals = array(
':from' => $email,
':to' => $recipient,
':name' => $name,
':subject' => $subject,
':message' = >$message
);
print_r($vals);
try {
$pdo = new PDOConfig();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM messages WHERE `message` LIKE :message";
$q = $pdo->prepare($sql);
$q->execute(array(':message' => $vals[':message']));
$resp = $q->fetchAll();
foreach ($resp as $row) {
throw new Exception('Please do not post the same message twice!');
}
$sql = "INSERT INTO messages (from, to, name, subject, message) VALUES (:from, :to, :name, :subject, :message)";
$q = $pdo->prepare($sql);
$q->execute($vals);
}
catch(PDOException $e) {
echo $e->getMessage();
}
而第一个print_r给
Array ( [:from] => abc@gmail.com
[:to] => lala@me.com
[:name] => abc
[:subject] => abc
[:message] => abc )
这是预期的(没有一个为空)
但它输出错误
SQLSTATE [42000]:语法错误或访问冲突:1064
SQL语法有错误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在“从,到,名称,主题,消息”附近使用VALUES(第1行的“
abc@gmail.com”,“ lala@me.com”)
不知道如何解决此问题。有任何想法吗?
from
是SQL中的关键字。您必须在未引用的情况下将其用作列名。在MySQL中,列名之类的内容使用反引号引起来,即from
。
就个人而言,我不会打扰。我只是将列重命名。
PS。正如注释中指出的那样,它to
是另一个SQL关键字,因此也需要将其引起来。方便地,drupal.org上的人员维护SQL保留字的列表。
是否有代码缺失/不正确? 谢谢
问题内容: 我有一个MySQL命令: 当我运行它时,我得到一个错误: 问题答案: 是不是 您应该使用SQL工具来可视化可能出现的错误,例如 MySQL Workbench 。
我正在运行以下SQL语法: 但不管用。我得到了这个错误: 错误1064(42000):您的SQL语法中有错误;查看与您的MySQL server版本相对应的手册,了解第1行“DISTINCT >”Number of Employees“FROM Hours”附近使用的正确语法 你能告诉我我在哪里做错了吗?对不起,我对MySQL和数据库不熟悉。
如有任何帮助,不胜感激。
问题内容: 我想在同一查询中使用WhereIn和Groupby来获取结果。 我已经试过了: 但是我得到了这个错误信息: SQLSTATE [42000]:语法错误或访问冲突:1055’sbrtpt.loading.id’不在GROUP BY中(SQL:从中选择从(14,15,16)组中的id按Vehicle_no进行加载) 问题答案: 简短答案 在-> 数组中 设置为全部禁用。 .... 要么 您
错误代码1064,SQL状态42000:您的SQL语法中有一个错误;请查看与您的MySQL服务器版本相对应的手册,以便在第1行“option sql_select_limit=default”附近使用正确的语法 我花了很多时间寻找解决方案,但没有找到解决方案:(