以下是使用 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 参数指定数字偏移比指定字段名称或表名.字段名称参数快得多。
result
正在评估的结果 资源。此结果来自对 mysql_query() 的调用。
row
正在检索的结果中的行号。行号从 0
开始。
field
要检索的字段的名称或偏移量。
它可以是字段的偏移量、字段的名称或字段的表点字段名称(表名.字段名)。如果列名已别名('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];
}
}
要替换行计数,例如
$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];
此函数考虑了原始函数能够接受 "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];
}
我也在寻找 mysqli 的替换方法来获取第一行,而查询已知只返回 1 个值。这似乎很简单
echo(mysql_result($result, 0));
变成
echo($result->fetch_row()[0]);
或者
if ($row = $result->fetch_row()) {
echo($row[0]);
}
如果 mysql_query 返回 0 行,则 mysql_result() 将抛出 E_WARNING。这与任何 mysql_fetch_* 函数都不一样,因此如果您在 error_reporting() 中打开了 E_WARNING,请注意这一点。您可能希望在调用 mysql_result() 之前检查 mysql_num_rows()
关于不应将 mysql_result 的使用与其他结果集函数混合使用的警告过于笼统。更具体地说,mysql_result 更改了结果集的内部行指针(至少在 LAMP 环境中)。这远非显而易见,因为该函数的本质是随机访问以快速获取字节。在一些 mysql_result 调用之后,在进入 mysql_fetch_array 循环之前,使用 mysql_data_seek 将使事情恢复正常。
如果您想从类似以下两个查询的 MySQL 查询中获取结果...
$query = mysql_query("SELECT COUNT(*) FROM table");
$query = mysql_query("SELECT LAST_INSERT_ID()");
... 您将使用 mysql_result(),如下所示,以将输出检索为整数。
$result = mysql_result($query, 0, 0);