ColdFusion:一个查询中有多个SQL语句? [英] ColdFusion: Multiple SQL statements in a query?
问题描述
显然,ColdFusion不喜欢在单个查询中使用多个SQL语句...所以这曾经是什么:
Apparently ColdFusion doesn't like multiple SQL statements within a single query... so what once was this:
SET @sender_user_id = 3, @recipient_user_id = 5;
INSERT INTO messages (message_type, sender_id, message_title, message_content)
VALUES(3, @sender_user_id, 'One more thing...', 'I am testing this message');
SET @saved_message_id = LAST_INSERT_ID();
INSERT INTO message_recipient (message_id, user_id)
VALUES(@saved_message_id, @recipient_user_id);
INSERT INTO message_status (message_id, user_id, is_read, read_datetime, is_deleted, deleted_datetime)
VALUES (@saved_message_id, @recipient_user_id, 0, NULL, 0, NULL);
把它变成这样:
<cftransaction>
<cfquery name="insertMessage" dataSource="mySource">
SET @sender_user_id = 3, @recipient_user_id = 5;
</cfquery>
<cfquery name="insertMessage2" dataSource="mySource">
INSERT INTO messages (message_type, sender_id, message_title, message_content)
VALUES(3, @sender_user_id, '#params.message_title#', '#params.message_content#');
</cfquery>
<cfquery name="insertMessage3" dataSource="mySource">
SET @saved_message_id = LAST_INSERT_ID();
</cfquery>
<cfquery name="insertMessage4" dataSource="mySource">
INSERT INTO message_recipient (message_id, user_id)
VALUES(@saved_message_id, @recipient_user_id);
</cfquery>
<cfquery name="insertMessage5" dataSource="mySource">
INSERT INTO message_status (message_id, user_id, is_read, read_datetime, is_deleted, deleted_datetime)
VALUES (@saved_message_id, @recipient_user_id, 0, NULL, 0, NULL);
</cfquery>
</cftransaction>
这行得通...但是我想知道是否有一些我不知道的ColdFusion东西.否则,这会起作用.
This works... but I'm wondering if there is some ColdFusion thing that I don't know about. Otherwise, this works.
推荐答案
在ColdFusion Admin中,转到数据源"定义表单,然后在连接字符串"框中添加"allowMultiQueries = true".完成此操作后,您可以在单个CFQUERY标记中传递多个用分号分隔的查询.只需确保使用CFQUERYPARAM来筛选SQL注入攻击即可.
In ColdFusion Admin, go to your Data Source definition form and add "allowMultiQueries=true" to the Connection String box. Once you do that, you can pass multiple semi-colon separated queries in a single CFQUERY tag. Just make sure you're using CFQUERYPARAM to screen for SQL Injection Attacks.
这篇关于ColdFusion:一个查询中有多个SQL语句?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!