1. ホーム
  2. php

[解決済み] mysqliからmysql_result()と同じ結果を得るには?[重複]。

2022-02-04 19:31:19

質問

と同じ結果を得ようとしています。 mysql_result()mysqli .

これを使いたい。

function user_id_from_username() {
    $username = sanitize($username);
    return mysql_result(mysql_query("SELECT id FROM users WHERE username = '$username'"), 0, 'id');
}

mysqli .

mysql_result() 関数がある string mysql_result ( resource $result , int $row [, mixed $field = 0 ] ) というパラメータがあります。

と同じものを得るにはどうしたらよいでしょうか。 mysqli もし、mysqliにこのようなパラメータをすべて持っている関数があれば mysql_result() 関数を使用する必要があります。

私はmysqlの拡張が減価償却されることを知っている、それが私がmysqliを使いたい理由です。

DB接続を渡す方法は知っていますし、それは問題ではありません。私はまた、これを試してみました。そして、それは動作します。

function user_active($username) {
    global $con;
    $username = sanitize($username);
    $result = mysqli_query($con,"SELECT `id` FROM `users` WHERE `username` = '$username' AND `active` = 1");
    return (mysqli_num_rows($result) == 1) ? true : false;
}

解決方法は?

対応するものがない mysqli_result() 関数がありますが、これはあなたのmysqlベースのコードと同等であるべきです。

function user_id_from_username() {
  $username = sanitize($username);
  $result = mysqli_query("SELECT id FROM users WHERE username = '$username'");
  $row = mysqli_fetch_row($result);
  return $row[0];
}

でも、関数呼び出しの返り値は本当にチェックした方がいいので、こんな感じの方がいいと思います。

function user_id_from_username() {
  $username = sanitize($username);
  $id = false;  // Return false on database error, or user not found.

  if ($result = mysqli_query("SELECT id FROM users WHERE username = '$username'")) {
    if ($row = mysqli_fetch_row($result)) {
      $id = $row[0];
    }
    mysqli_free_result($result); // Always free your resources.
  }

  return $id;
}