MYSQL_ROW
mysql_fetch_row(MYSQL_RES *result)
mysql_fetch_row()
是一個同步函式。其非同步對應函式是 mysql_fetch_row_nonblocking()
,供需要與伺服器進行非同步通訊的應用程式使用。請參閱 第 7 章,C API 非同步介面。
mysql_fetch_row()
擷取結果集的下一列
在
mysql_store_result()
或mysql_store_result_nonblocking()
之後使用時,如果沒有更多列要擷取,mysql_fetch_row()
會傳回NULL
。在
mysql_use_result()
之後使用時,如果沒有更多列要擷取或發生錯誤,mysql_fetch_row()
會傳回NULL
。
列中的值數量由 mysql_num_fields(result)
給定。如果 row
保存對 mysql_fetch_row()
的呼叫傳回值,則可以將指向這些值的指標作為 row[0]
到 row[mysql_num_fields(result)-1]
存取。列中的 NULL
值由 NULL
指標指示。
可以透過呼叫 mysql_fetch_lengths()
來取得列中欄位值的長度。空欄位和包含 NULL
的欄位長度都為 0;您可以透過檢查欄位值的指標來區分它們。如果指標為 NULL
,則欄位為 NULL
;否則,欄位為空。
下一列的 MYSQL_ROW
結構,或 NULL
。NULL
傳回的意義取決於在呼叫 mysql_fetch_row()
之前呼叫的函式。
在
mysql_store_result()
或mysql_store_result_nonblocking()
之後使用時,如果沒有更多列要擷取,mysql_fetch_row()
會傳回NULL
。在
mysql_use_result()
之後使用時,如果沒有更多列要擷取或發生錯誤,mysql_fetch_row()
會傳回NULL
。若要判斷是否發生錯誤,請檢查mysql_error()
是否傳回非空字串,或mysql_errno()
是否傳回非零值。
MYSQL_ROW row;
unsigned int num_fields;
unsigned int i;
num_fields = mysql_num_fields(result);
while ((row = mysql_fetch_row(result)))
{
unsigned long *lengths;
lengths = mysql_fetch_lengths(result);
for(i = 0; i < num_fields; i++)
{
printf("[%.*s] ", (int) lengths[i],
row[i] ? row[i] : "NULL");
}
printf("\n");
}