-1
function getById($id) {
    global $mysqli;
    $result = $mysqli->query("SELECT * FROM `ids` WHERE `id` = '".$mysqli->real_escape_string($id)."'") or die($mysqli->error);
    $rows = array();
    while($row = $result->fetch_array(MYSQLI_ASSOC)) {
        $rows[] = $row;
    }
    return $rows;
}

如何获取 id 字段的值?

$data = getById(1);

echo $data[0]echo $data['id']不起作用。

4

2 回答 2

4

您的函数返回一个数组数组,因此要获取第一个 ID:

$data = getById(1);
echo $data[0]['id'];

旁注:

  • 全局变量是不可取的。考虑将数据库连接对象作为参数传递给函数。
  • 像这样转义是防止 SQL 注入的原始方法。使用Prepared Statement会更安全、更容易。
  • or die(....)这是不好的做法,因为它会将详细的 MySQL 错误暴露给用户,如果你已经写了数百次,就很难删除它。另一种方法是trigger_error()静默写入您的错误日志。
于 2013-08-05T07:33:52.270 回答
2

您无需使用 while 和数组。获取单行,无需使用数组即可获取:

function getById($id) {
    global $mysqli;
    $result = $mysqli->query("SELECT * FROM `ids` WHERE `id` = '".$mysqli->real_escape_string($id)."'") or die($mysqli->error);

    return $result->fetch_array(MYSQLI_ASSOC);
}

$data = getById(1);

echo $data['id'];
于 2013-08-05T07:36:37.143 回答