這是使用 mysqli 的粗略替代方案
if (!function_exists('mysql_result')) {
function mysql_result($result, $number, $field=0) {
mysqli_data_seek($result, $number);
$row = mysqli_fetch_array($result);
return $row[$field];
}
}
(PHP 4, PHP 5)
mysql_result — 取得結果資料
此擴充功能在 PHP 5.5.0 中已被棄用,並在 PHP 7.0.0 中移除。請改用 MySQLi 或 PDO_MySQL 擴充功能。另請參閱 MySQL:選擇 API 指南。此函數的替代方案包括
從 MySQL 結果集中擷取一個儲存格的內容。
處理大型結果集時,應考慮使用擷取整列的函數(如下所指定)。由於這些函數在一個函數呼叫中傳回多個儲存格的內容,因此它們比 mysql_result() 快得多。此外,請注意,為 field 引數指定數字偏移量比指定欄位名稱或 table.field 引數快得多。
result
正在評估的結果 resource。此結果來自呼叫 mysql_query()。
row
從結果中擷取的列號。列號從 0
開始。
field
要擷取的欄位的名稱或偏移量。
它可以是欄位的偏移量、欄位的名稱,或是欄位的表格點欄位名稱 (tablename.fieldname)。如果欄位名稱已使用別名 ('select foo as bar from...'),請使用別名,而不是欄位名稱。如果未定義,則擷取第一個欄位。
成功時傳回 MySQL 結果集中一個儲存格的內容,失敗時傳回 false
。
範例 1 mysql_result() 範例
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('無法連線:' . mysql_error());
}
if (!mysql_select_db('database_name')) {
die('無法選取資料庫:' . mysql_error());
}
$result = mysql_query('SELECT name FROM work.employee');
if (!$result) {
die('無法查詢:' . mysql_error());
}
echo mysql_result($result, 2); // 輸出第三位員工的姓名
mysql_close($link);
?>
注意:
不應將 mysql_result() 的呼叫與處理結果集的其他函數的呼叫混合使用。
這是使用 mysqli 的粗略替代方案
if (!function_exists('mysql_result')) {
function mysql_result($result, $number, $field=0) {
mysqli_data_seek($result, $number);
$row = mysqli_fetch_array($result);
return $row[$field];
}
}
此函數考慮到原始函數能夠接受 "table_name.field_name" 項目以及僅欄位名稱的能力
function mysqli_result($res, $row, $field=0) {
$result->data_seek($row);
$data = $result->fetch_array();
$field_name = $field;
if ( is_string($field) ) {
$fields_array = explode(".", $field);
$array_len = count($fields_array);
if ($array_len > 1) {
$field_name = $fields_array[array_len - 1];
} else {
$field_name = $fields_array[0];
}
}
return $data[$field_name];
}
若要替換列計數,例如
$querystring = "SELECT COUNT(*) FROM table WHERE column1 = 'EXAMPLE'";
$total_records = mysql_result(mysql_query($querystring,$connection),0);
請使用 mysqli_fetch_row
$querystring = "SELECT COUNT(*) FROM table WHERE column1 = 'EXAMPLE'";
$rowcount = mysqli_fetch_row(mysqli_query($connection,$querystring));
$total_records = $rowcount[0];
我也在尋找 mysqli 替代方案來取得第一列,當已知查詢只會傳回 1 個值時。似乎很簡單
echo(mysql_result($result, 0));
變成
echo($result->fetch_row()[0]);
或者
if ($row = $result->fetch_row()) {
echo($row[0]);
}