PHP 早期 MySQL 擴充函式中,mysql_query() 與 mysql_unbuffered_query() 的最大差異在於結果集的緩衝機制,這直接影響 mysql_data_seek() 等指標操作函式的可用性。
mysql_data_seek()、mysql_num_rows()、隨機存取列資料。mysql_data_seek()、mysql_num_rows() 等需隨機存取的函式。功能:移動結果集內部資料指標到指定列 (row 從 0 起算)。
bool mysql_data_seek(resource $result, int $row)
mysql_query() 回傳的 resource;$row 為目標列號 (0 ~ mysql_num_rows-1)。$conn = mysql_connect('localhost','root','root');
mysql_query('SET NAMES gbk');
mysql_select_db('pw8',$conn);
$sql = "SELECT * FROM shop_district";
$result = mysql_query($sql,$conn); // 必須用緩衝查詢
// 第一次遍歷
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
printf("ID: %s FID: %s Name: %s\n", $row[0], $row[1], $row[2]);
}
// 將指標重置到第 0 列
mysql_data_seek($result, 0);
// 第二次遍歷
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
printf("ID: %s FID: %s Name: %s\n", $row[0], $row[1], $row[2]);
}
mysql_free_result($result);
注意:mysql_* 函式已於 PHP 5.5 棄用、PHP 7.0 移除,新專案請改用 mysqli 或 PDO。