3

因此,这不适用于 mysql_query。

我严格使用 c++,我没有使用 php。

我希望执行这个双重查询,以便我在事务系统中始终拥有唯一的 ID,并发用户创建 ID。

mysql_query(connection, \
"INSERT INTO User() VALUES ();  SELECT LAST_INSERT_ID(); ");

它在 MySql 数据库中完美运行,但我需要将它添加到 Eclipse(我使用的是 Ubuntu 12.04 LTS)。

我的应用程序很大,我不想更改为 mysqli,如果可以的话,但如果没有其他方法就可以了。

你能帮我解决这个问题吗?提前致谢。

4

1 回答 1

4

根据 MySQL C API 文档:

MySQL 5.6 还支持执行包含由分号 (“;”) 字符分隔的多个语句的字符串。当您使用 mysql_real_connect() 连接到服务器时或通过调用 mysql_set_server_option() 连接到服务器后指定的特殊选项启用此功能。

和:

CLIENT_MULTI_STATEMENTS 使 mysql_query() 和 mysql_real_query() 能够执行包含由分号分隔的多个语句的语句字符串。此选项还隐式启用 CLIENT_MULTI_RESULTS,因此 mysql_real_connect() 的 CLIENT_MULTI_STATEMENTS 的标志参数等效于 CLIENT_MULTI_STATEMENTS | 的参数。CLIENT_MULTI_RESULTS。也就是说,CLIENT_MULTI_STATEMENTS 足以启用多语句执行和所有多结果处理。

因此,您可以在单个 mysql_query() 调用中提供多个语句,用分号分隔,假设您使用 mysql_real_connect 设置 mysql 连接有点不同。您需要将以下标志作为最后一个参数传递:CLIENT_MULTI_STATEMENTS,其文档说:

告诉服务器客户端可以在一个字符串中发送多个语句(用“;”分隔)。如果未设置此标志,则禁用多语句执行。有关此标志的更多信息,请参阅此表后面的注释。

请参阅多语句执行的 C API 支持22.8.7.53。mysql_real_connect()获取更多详细信息。

于 2013-10-12T14:37:34.303 回答