因此,这不适用于 mysql_query。
我严格使用 C++,不使用 php。
我希望执行这个双重查询,以便我在并发用户创建 ID 的事务系统中始终拥有唯一的 ID。
mysql_query(connection, \
"INSERT INTO User() VALUES (); SELECT LAST_INSERT_ID(); ");
它在 MySql DataBase 中完美运行,但我需要将其添加到 Eclipse(我使用的是 Ubuntu 12.04 LTS)。
我的应用程序相当大,我不想更改为 mysqli,如果这是可能的,但如果没有其他方法那就没问题了。
你能帮我解决这个问题吗?提前致谢。
根据 MySQL C API 文档:
MySQL ...还支持执行包含多个的字符串
用分号分隔的语句 (“;”
) 人物。这个能力是
通过连接时指定的特殊选项启用
到服务器mysql_real_connect()
或通过以下方式连接后
呼叫mysql_set_server_option()
.
And:
CLIENT_MULTI_STATEMENTS
使mysql_query()
and mysql_real_query()
执行包含多个分隔语句的语句字符串
用分号。该选项还可以启用CLIENT_MULTI_RESULTS
隐式地,所以 flags 参数CLIENT_MULTI_STATEMENTS
to
mysql_real_connect()
相当于一个参数CLIENT_MULTI_STATEMENTS | CLIENT_MULTI_RESULTS
。那是,CLIENT_MULTI_STATEMENTS
足以启用多语句
执行和所有多结果处理。
因此,您可以在一个语句中提供多个语句mysql_query()
调用,以分号分隔,假设您使用 mysql_real_connect 设置 mysql 连接稍有不同。
您需要传递以下标志作为最后一个参数:CLIENT_MULTI_STATEMENTS
,其文档说:
告诉服务器客户端可以在一个语句中发送多个语句
单个字符串(由“;”
)。如果这个标志没有被设置,
多语句执行被禁用。请参阅此后的注释
表了解有关此标志的更多信息。
See C API 支持多语句执行 https://dev.mysql.com/doc/c-api/8.0/en/c-api-multiple-queries.html and mysql_real_connect() http://dev.mysql.com/doc/c-api/8.0/en/mysql-real-connect.html更多细节。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)