MySQL具有相同连接的多个预准备语句

时间:2010-02-19 00:37:20

标签: mysql prepared-statement

同时设置多个预准备语句的规则(使用单个数据库连接)究竟是什么规则?我经常有包含多个查询的循环;设置3个准备好的语句,循环遍历它们然后全部关闭它们会很好。

我发现有时候他们会一起工作,有时却不会。例如,我已经能够同时设置3个SELECT语句。但我认为在同一个表上运行准备好的SELECT和INSERT,在循环中运行,使我与数据库断开连接(或者至少它不能正常工作)。 但是,当我将准备好的语句更改为常规查询时,我可以按相同的顺序运行相同的查询,就好了。

我几乎是一个新手,并希望得到一些关于它是如何工作的澄清!

1 个答案:

答案 0 :(得分:1)

听起来你有一个很好的候选存储过程。当您需要根据另一个选择查询的结果将数据插入到一个表中时,通常可以比编程语言代码更快地在存储过程中执行此操作。

至于为什么你现在的系统不起作用;我想你可能会看到'命令不同步;您现在无法在客户端代码中运行此命令,而是以错误的顺序调用客户端函数“

预处理语句会发生这种情况,因为它们实际上返回了两个结果集。因此,当您从select查询中检索一行然后尝试执行插入时,实际上有另一个结果集在管道中等待。在插入之前,您需要检索第二个结果。

总而言之,使用常规查询或使用存储过程可能会更好。