值得注意的是,MySQLi 函式(我推測 MySQL 函式也是)會擷取字串,無論 MySQL 資料類型為何。例如,如果您擷取具有整數欄位的列,該欄位和列的對應值仍然會以字串形式儲存在 mysql_fetch_row 傳回的陣列中。
(PHP 5、PHP 7、PHP 8)
mysqli_result::fetch_row -- mysqli_fetch_row — 將結果集中的下一行擷取為列舉陣列
物件導向風格
程序風格
從結果集中擷取一行資料,並將其作為列舉陣列傳回,其中每一欄都儲存在從 0(零)開始的陣列偏移中。後續每次呼叫此函式都會傳回結果集中的下一行,如果沒有更多行,則會傳回 null
。
注意: 此函式會將 NULL 欄位設定為 PHP
null
值。
result
僅限程序風格:由 mysqli_query()、mysqli_store_result()、mysqli_use_result() 或 mysqli_stmt_get_result() 傳回的 mysqli_result 物件。
範例 1 mysqli_result::fetch_row() 範例
物件導向風格
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
$query = "SELECT Name, CountryCode FROM City ORDER BY ID DESC";
$result = $mysqli->query($query);
/* 擷取物件陣列 */
while ($row = $result->fetch_row()) {
printf("%s (%s)\n", $row[0], $row[1]);
}
程序風格
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = mysqli_connect("localhost", "my_user", "my_password", "world");
$query = "SELECT Name, CountryCode FROM City ORDER BY ID DESC";
$result = mysqli_query($mysqli, $query);
/* 擷取關聯陣列 */
while ($row = mysqli_fetch_row($result)) {
printf("%s (%s)\n", $row[0], $row[1]);
}
上述範例將輸出類似下列的內容
Pueblo (USA) Arvada (USA) Cape Coral (USA) Green Bay (USA) Santa Clara (USA)
值得注意的是,MySQLi 函式(我推測 MySQL 函式也是)會擷取字串,無論 MySQL 資料類型為何。例如,如果您擷取具有整數欄位的列,該欄位和列的對應值仍然會以字串形式儲存在 mysql_fetch_row 傳回的陣列中。
請注意,mysqli_fetch() 雖然已被棄用,但仍在 PHP 函式列表中。mysqli_fetch_row() 現今是 MySQL 程序式風格所使用的方式,但未列在 PHP 函式中。
請記住 fetch() 和 fetch_row() 是兩種不同的東西,且使用方式不同。
- fetch() 用於語句(例如已執行的預備語句),且需要與 bind_result() 搭配使用。
- fetch_row() 用於結果(例如 query() 的結果)。
因此,如果您想將 fetch_row() 與已執行的預備語句一起使用,首先您必須使用 mysqli_store_result() 或 mysqli_use_result() 從此語句中取得結果。
出自 "README.PHP4-TO-PHP5-THIN-CHANGES"
4. 從 ext/mysql 移植到 ext/mysqli 時請小心。以下
函式在結果集中沒有更多資料時會傳回 NULL
(ext/mysql 的函式則傳回 FALSE)。
- mysqli_fetch_row()
- mysqli_fetch_array()
- mysqli_fetch_assoc()