显然,ColdFusion 不喜欢在单个查询中使用多个 SQL 语句...所以曾经是这样的:
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);
Get 变成了这样:
<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 东西。否则,这有效。
最佳答案
在 ColdFusion Admin 中,转到数据源定义表单并将“allowMultiQueries=true”添加到“连接字符串”框中。完成后,您可以在单个 CFQUERY 标记中传递多个以分号分隔的查询。只需确保您使用 CFQUERYPARAM 来筛选 SQL 注入(inject)攻击。
关于mysql - ColdFusion:查询中有多个 SQL 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6299326/