简体   繁体   English

每个MySQL语句是否需要一个新的查询对象?

[英]Do I need a new query object for each MySQL statement?

I'm trying to compile several MySQL statements and execute them in the same request, but I keep getting a MySQL syntax error: 我正在尝试编译几个MySQL语句并在同一请求中执行它们,但是我不断收到MySQL语法错误:

local.sql = "";
for (local.i in this.hitArray)
{
    local.sql &= "UPDATE posts SET viewCount = posts.viewCount + 1 WHERE posts.id = #local.i.postId#;";
}
local.service.setSQL(local.sql);

Raw SQL dump (local.sql var): 原始SQL转储(local.sql var):

UPDATE posts SET viewCount = posts.viewCount + 1 WHERE posts.id = 95;UPDATE posts SET viewCount = posts.viewCount + 1 WHERE posts.id = 95;UPDATE posts SET viewCount = posts.viewCount + 1 WHERE posts.id = 95;

It appears the query is chocking right at the end of the first statement. 似乎查询在第一个语句的末尾令人cho目结舌。

MySQL disables multiple statements by default to prevent sql injection. MySQL默认情况下禁用多个语句以防止sql注入。 You must add the allowMultiQueries flag to your connection string to enable them. 您必须将allowMultiQueries标志添加到连接字符串以启用它们。

Note: Obviously if you enable multiple statements, it is very important all of your queries use cfqueryparam or addParam because you are now at risk for sql injection. 注意:显然,如果启用多个语句,则所有查询都使用cfqueryparam或addParam是非常重要的,因为您现在有进行SQL注入的风险。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM