处理不返回结果集的查询,用mysql_query() 或mysql_real_query() 发布查询。如果查询成功,可以通过调用mysql _ a ffected_rows() 找出有多少行需要插入、删除或修改。下面的样例说明如何处理不返回结果集的查询:
请注意在打印时mysql _ a ffected_rows() 的结果是如何转换为unsigned long 类型的,这个函数返回一个my_ulonglong 类型的值,但在一些系统上无法直接打印这个类型的值(例如,笔者观察到它可在FreeBSD 下工作,但不能在Solaris 下工作)。把值转换为unsigned long 类型并使用‘% l u’打印格式可以解决这个问题。同样也要考虑返回my_ulonglong 值的其他函数,如mysql_num_rows() 和mysql _ insert _ id ( )。如果想使客户机程序能跨系统地移植,就要谨记这一点。
process_result_set() 以制表符分隔的形式打印每一行(将NULL值显示为单词“NULL”),它跟在被检索的行计数的后面, 该计数通过调用mysql_num_rows() 来计算。像mysql _ affected_rows() 一样,mysql_num_rows() 返回my_ulonglong 值,因此,将值转换为unsigned long 型,并用‘% l u’ 格式打印。
提取行的循环紧接在一个错误检验的后面,如果要用mysql_store_result() 创建结果集,mysql_fetch_row() 返回的N U L L值通常意味着“不再有行”。然而,如果用mysql _ use _ result( )创建结果集,则mysql_fetch_row() 返回的NULL 值通常意味着“不再有行”或者发生了错误。无论怎样创建结果集,这个测试只允许process_result_set() 检测错误。