为什么明明有结果集但是mysql_num_rows(result)总是为0???

bool MyDB::exeSQL(string sql)

{

// mysql_query()执行成功返回0,失败返回非0值。与PHP中不一样

if(mysql_query(connection, sql.c_str()))

{

cout << "Query Error:" << mysql_error(connection);

exit(1);

}

else

{

result = mysql_use_result(connection); // 获取结果集

// mysql_field_count()返回connection查询的列数
cout << mysql_num_rows(result) << endl;
cout << mysql_num_fields(result) << endl;
for(int i=0; i < 3; ++i)

{

        // 获取下一行  
        row = mysql_fetch_row(result);  
        if(row <= 0)  
        {  
            break;  
        }  
        // mysql_num_fields()返回结果集中的字段数  
        for(int j=0; j < mysql_num_fields(result); ++j)  
        {  
            cout << row[j] << " ";  
        }  
        cout << endl;  
    }  
    // 释放结果集的内存  
    mysql_free_result(result);  
}  
return true;  

}

图片说明

图片说明

mysql_num_rows()的返回值为my_ulonglong类型,在某些系统上打印可能不成功,尝试用下面的写法打印:

cout << (unsigned long)mysql_num_rows(result) << endl;

$mysql_server_name='localhost';
$mysql_username='root';
$mysql_password='123456';
$mysql_database='myphp';

$conn=mysql_connect($mysql_server_name,$mysql_username,$mysql_password,$mysql_database);
mysql_select_db($mysql_database,$conn);
//echo $username2;
$sql="select * from register where username='$username2'";
$result=mysql_query($sql) or die ("sql error");
$row=mysql_num_rows($result);
if($row>0){
echo ("yes");
}
else{
echo ("no");
}

mysql_use_result 与mysql_store_result的区别