0

为什么我在以下代码中没有得到结果并num_rows返回0

这是我的代码:

    function get_user($user_id) {// This function give some data from table user with user_id
  try {
    $connection = start_service();
    $user_id = sanitize_string($user_id);
    $stmt = $connection->prepare(
        "SELECT user_id, name, lname, gender, password, avatar, bdate, user_group_id, status, signup_date, last_signin
        FROM user
        WHERE user_id = ?
        ");
    $stmt->bind_param("i", $user_id);
    $stmt->execute();
    $stmt->bind_result($user_id, $name, $lname, $gender, $password, $avatar, $bdate, $user_group_id, $status, $signup_date, $last_signin);
    if($stmt->num_rows){
      while($stmt->fetch()) {
        array_push($result, array(
          "user_id" => $user_id,
          "name" => $name,
          "lname" => $lname,
          "gender" => $gender,
          "password" => $password,
          "avatar" => $avatar,
          "bdate" => $bdate,
          "user_group_id" => $user_group_id,
          "status" => $status,
          "signup_date" => $signup_date,
          "last_signin" => $last_signin
          ));
      }
    } else {
      $result = false;
    }
    print $stmt->num_rows;
    $stmt->close();
    end_service();
  } catch (exception $e) {
      end_service_error();
      echo $e->getMessage(), "\n";
      throw $e;
  }
  return $result;
}

问题出在哪里,我必须做些什么来解决它?

4

1 回答 1

0

我认为你需要先打电话mysqli_stmt_store_result(),然后再打电话mysqli_stmt_num_rows()

$stmt->execute();
$stmt->store_result();
$stmt->bind_result($user_id, $name, $lname, $gender, $password, $avatar, $bdate, $user_group_id, $status, $signup_date, $last_signin);
if($stmt->num_rows){
    ...
}
于 2013-08-21T16:52:07.597 回答