Как вернуть результаты из подготовленного заявления Mysqli - PullRequest
0 голосов
/ 01 мая 2011

Сейчас я изучаю Mysqli. Но у меня есть проблема о том, как вернуть набор результатов из подготовленного MySQL. У меня есть следующий код в Loginclass.php:

$stmt = mysqli_stmt_init($db->getCon());

    $stmt->prepare('SELECT * FROM `user` WHERE `user_username` = ? AND `user_password` = ?');
        $user_username = $this->_user_name;
        $user_password = $this->_password;
    $stmt->bind_param('ss', $user_username, $user_password);
    $stmt->execute();

    $stmt->store_result();

    if($stmt->num_rows() == 0) {
        return false;
    }

    else {
        $this->setPass(true);
        return $result;
    }

Теперь я хочу в login.php сделать следующее с возвращаемым переменным $ result:

while ($row = $result->fetch_assoc()) {

$_SESSION['login']['user_id'] = $row['user_id'];

}

1 Ответ

0 голосов
/ 05 мая 2011

Это все из-за $db->getCon() имени метода :)

Похоже, вы не понимаете логику операторов - прочитайте руководство .

Попробуйте этот код:

//$stmt is object, which can be returned by prepare method
$stmt = $db->prepare('SELECT * FROM `user` WHERE `user_username` = ? AND `user_password` = ?');
$user_username = $this->_user_name;
$user_password = $this->_password;
$stmt->bind_param('ss', $user_username, $user_password);
$stmt->execute();
$stmt->bind_result($result);  //instead of $stmt->store_result();
$stmt->fetch();

if (empty($result))
{
    return false;
}
else
{
    $this->setPass(true);
    return $result;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...