我知道这应该是一个非常简单的修复方法,但我无法找到语法错误。我使用的框架将?
字符替换为我传递给它的值,因此"?" % "mytable"
- > "'mytable'"
,非常简单吧?
我发送字符串
"select * from ? limit ?;" % ("assays", 10)
我收到了语法错误:
"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 ''assays' limit 10' at line 1"
我觉得我错过了很简单的事情。
感谢您的帮助。
答案 0 :(得分:0)
您不能用您的框架替换表名或列名 - 仅限值。查询编译为
select * from 'assays' limit 10
但报价错了。删除它们或使用反引号。但我猜这个框架会自动完成。
答案 1 :(得分:0)
看起来您的框架转换为"分析"进行检测'并将其转发给mysql。通过语法错误,它将发送mysql,如:
选择*来自'分析'限制1;
如果你在mysql上测试,你会得到同样的错误:
mysql>从' test1'中选择*限制1; 错误1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在#test;' test1'附近使用正确的语法。限制1'在第1行 root @ localhost [test]