_real_connect()相适应的MYSQL对象。如果mysql是NULL指针,该函数将分配、初始化、并返回新对象。否则,将初始化对象,并返回对象的地址。如果mysql_init()分配了新的对象,当调用mysql_close()来关闭连接时。将释放该对象。
返回值
初始化的MYSQL*句柄。如果无足够内存以分配新的对象,返回NULL。
错误
在内存不足的情况下,返回NULL。
25.2.3.36. mysql_insert_id()
my_ulonglong mysql_insert_id(MYSQL *mysql)
描述
返回由以前的INSERT或UPDATE语句为AUTO_INCREMENT列生成的值。在包含AUTO_INCREMENT字段的表中执行了INSERT语句后,应使用该函数。
更准确地讲,将在下述条件下更新mysql_insert_id():
? 将值保存到AUTO_INCREMENT列中的INSERT语句。无论值是通过在列中存储特殊值NULL或0自动生成的,还是确切的非特殊值,都成立。
? 在有多行INSERT语句的情况下,mysql_insert_id()返回第1个自动生成的AUTO_INCREMENT值,如果未生成这类值,将返回插入在AUTO_INCREMENT列中的最后1个确切值。
? 通过将LAST_INSERT_ID(expr)插入到任意列中以生成AUTO_INCREMENT值的INSERT语句。
? 通过更新任意列至LAST_INSERT_ID(expr)以生成AUTO_INCREMENT值的INSERT语句。
? mysql_insert_id()的值不受诸如SELECT等返回结果集的语句的影响。
? 如果前面的语句返回了错误,mysql_insert_id()的值将是不确定的。
注意,如果前面的语句未使用AUTO_INCREMENT,mysql_insert_id()返回0。如果需要保存值,在生成值的语句后,务必立刻调用mysql_insert_id()。
mysql_insert_id()的值仅受在当前客户端连接内发出的语句的影响。不受由其他客户端发出的语句的影响。
请参见12.9.3节,“信息函数”。
此外还应注意,SQL LAST_INSERT_ID()函数的值总包含最近生成的AUTO_INCREMENT值,而且在语句之间不会被复位,原因在于该函数的值是在服务器中维护的。另一个区别是,如果设置了AUTO_INCREMENT列来指定非特殊值,不会更新LAST_INSERT_ID()。
LAST_INSERT_ID()不同于mysql_insert_id()的原因在于,LAST_INSERT_ID()在脚本中很容易使用,而mysql_insert_id()则试图提供关于在AUTO_INCREMENT列中出现情况的更准确信息。
返回值
在前面的讨论中予以了介绍。
错误
无。
25.2.3.37. mysql_kill()
int mysql_kill(MYSQL *mysql, unsigned long pid)
描述
请求服务器杀死由pid指定的线程。
返回值
0表示成功,非0值表示出现错误。
错误
? CR_COMMANDS_OUT_OF_SYNC
以不恰当的顺序执行了命令。
? CR_SERVER_GONE_ERROR
MySQL服务器不可用。
? CR_SERVER_LOST
在查询过程中,与服务器的连接丢失。
? CR_UNKNOWN_ERROR
出现未知错误。
25.2.3.38. mysql_library_end()
void mysql_library_end(void)
描述
它是mysql_server_end()函数的同义词。
关于具体的用法,请参见25.2.2节,“C API函数概述”。
25.2.3.39. mysql_library_init()
int mysql_library_init(int argc, char **argv, char **groups)
描述
这是mysql_server_init()函数的同义词。
关于具体的用法,请参见25.2.2节,“C API函数概述”。
25.2.3.40. mysql_list_dbs()
MYSQL_RES *mysql_list_dbs(MYSQL *mysql, const char *wild)
描述
返回由服务器上的数据库名称组成的结果集,该服务器与由通配符参数指定的简单正则表达式匹配。通配符参数可以包含通配符“%”或“_”,也可以是NULL指针,以便与所有的数据库匹配。调用mysql_list_dbs()的方法类似于执行查询SHOW database [LIKE wild]。
必须用mysql_free_result()释放结果集。
返回值
成功后返回MYSQL_RES结果集。如果出现错误,返回NULL。
错误
? CR_COMMANDS_OUT_OF_SYNC
以不恰当的顺序执行了命令。
? CR_OUT_OF_MEMORY
内存溢出。
? CR_SERVER_GONE_ERROR
MySQL服务器不可用。
? CR_SERVER_LOST
在查询过程中,与服务器的连接丢失。
? CR_UNKNOWN_ERROR
出现未知错误。
25.2.3.41. mysql_list_fields()
MYSQL_RES *mysql_list_fields(MYSQL *mysql, const char *table, const char *wild)
描述
返回由给定表中的字段名称组成的结果集,给定表与由通配符参数指定的简单正则表达式匹配。通配符参数可以包含通配符“%”或“_”,也可以是NULL指针,以便与所有的字段匹配。调用mysql_list_fields()的方法类似于执行查询SHOW COLUMNS FROM tbl_name [LIKE wild]。
注意,建议使用SHOW COLUMNS FROM tbl_name,而不是mysql_list_fields()。
必须用mysql_free_result()释放结果集。
返回值
如果成功,返回MYSQL_RES结果集。如果出现错误,返回NULL。
错误
? CR_COMMANDS_OUT_OF_SYNC
以不恰当的顺序执行了命令。
? CR_SERVER_GONE_ERROR
MySQL服务器不可用。
? CR_SERVER_LOST
在查询过程中,与服务器的连接丢失。
? CR_UNKNOWN_ERROR
出现未知错误。
25.2.3.42. mysql_list_processes()
MYSQL_RES *mysql_list_processes(MYSQL *mysql)
描述
返回描述当前服务器线程的结果集。该类信息与mysqladmin processlist或SHOW PROCESSLIST查询给出的信息相同。
必须用mysql_free_result()释放结果集。
返回值
如果成功,返回MYSQL_RES结果集。如果出现错误,返回NULL。
错误
? CR_COMMANDS_OUT_OF_SYNC
以不恰当的顺序执行了命令。
? CR_SERVER_GONE_ERROR
MySQL服务器不可用。
? CR_SERVER