-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 インジェクションを防ぐ原始的な方法です。プリペアド ステートメントを使用すると、より安全で簡単になります。
  • or die(....)これは、MySQL の詳細なエラーがユーザーに公開されてしまうため、悪い習慣です。何百回も書いていると削除するのが難しくなります。別の方法はtrigger_error()、エラーログにサイレントに書き込むことです。
于 2013-08-05T07:33:52.270 に答える
2

while と array を使用する必要はありません。単一の行を取得すると、配列を使用せずに取得できます。

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 に答える