PHP PDO-语法问题
最近,我开始与某人的库合作,该库利用了一些现代的PHP5特性,并引入了这种奇怪的新PDO语言,显然,在这种语言中,您不可能以通常的方式解决SQL问题 以下是被拒绝的生成的SQL语句:PHP PDO-语法问题,php,mysql,sql,pdo,Php,Mysql,Sql,Pdo,最近,我开始与某人的库合作,该库利用了一些现代的PHP5特性,并引入了这种奇怪的新PDO语言,显然,在这种语言中,您不可能以通常的方式解决SQL问题 以下是被拒绝的生成的SQL语句: INSERT INTO "eve"."utilRegisterKey" ("activeAPIMask","isActive","keyID","vCode") VALUES (?,?,?,?) ON DUPLICATE KEY UPDATE "activeAPIMask"=VALUES("activeAPIMas
INSERT INTO "eve"."utilRegisterKey" ("activeAPIMask","isActive","keyID","vCode") VALUES (?,?,?,?) ON DUPLICATE KEY UPDATE "activeAPIMask"=VALUES("activeAPIMask"),"isActive"=VALUES("isActive"),"keyID"=VALUES("keyID"),"vCode"=VALUES("vCode")
通常我会假设引号是杀死这条语句的原因,但据我所知,这个PDO系统对此“很酷”
以下是错误:
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 '"eve"."utilRegisterKey" ("activeAPIMask","isActive","keyID","vCode") VALUES ('26' at line 1)
我没有理由认为图书馆有错,它似乎是由一位专家写的。那么会出什么问题呢?您不能将表名或列标识符用引号括起来。要么使用记号,要么什么都不使用
INSERT INTO eve.utilRegisterKey (activeAPIMask,isActive,keyID,vCode)
或
不能将表名或列标识符用引号括起来。要么使用记号,要么什么都不使用
INSERT INTO eve.utilRegisterKey (activeAPIMask,isActive,keyID,vCode)
或
哇,原来是图书馆!这太疯狂了。@1当然不是库,那是MySQL。标识符用反引号或不引号引起来。从不使用单引号或双引号。我的意思是(我可能错了)我正在使用的库似乎用引号将表括起来,如:
“插入到“%1$s”。%2$s%3$s”(%4$s)值%5$s(在重复键更新%6$s时),
看起来可能是在生成查询时删除这些引号,或者是编写错误的。我怀疑是后者。事实上你们的答案都不正确。我是他正在使用的库的作者,我在MySQL中使用ANSI模式,这需要MySQL遵守ANSI SQL引用规则,或者至少接近ANSI SQL。他使用的课程我没有设置导致问题的模式。你可以在魔兽世界中找到更多关于MySQL模式的信息,所以它就是这个库!这太疯狂了。@1当然不是库,那是MySQL。标识符用反引号或不引号引起来。从不使用单引号或双引号。我的意思是(我可能错了)我正在使用的库似乎用引号将表括起来,如:“插入到“%1$s”。%2$s%3$s”(%4$s)值%5$s(在重复键更新%6$s时),
看起来可能是在生成查询时删除这些引号,或者是编写错误的。我怀疑是后者。事实上你们的答案都不正确。我是他正在使用的库的作者,我在MySQL中使用ANSI模式,这需要MySQL遵守ANSI SQL引用规则,或者至少接近ANSI SQL。他使用的课程我没有设置导致问题的模式。有关MySQL模式的更多信息,请访问