PHP如何在while循环之外回显fetch的结果

时间:2012-03-21 19:30:21

标签: php oop mysqli

我是面向对象PHP的新手。目前我正在制作一个登录脚本,并且陷入困境和困境。回应结果。这是我的剧本:

$stmt = $db->mysqli->prepare("select User from `users` where User = ? AND Password = ?");
$stmt->bind_param('ss', $username, $password);
$stmt->execute();
$stmt->store_result();
$num = $stmt->num_rows;
$stmt->bind_result($username);

if ( $num !== 1 ) {
    echo 'no result';
} else {
    echo 'Your username: '. $username ;
}

$stmt->close();

正如您所看到的,我没有在上面的脚本中获取结果。我尝试在$stmt->fetch()之前的while循环中使用$num !== 1

然而,获取的结果被“存储”为一个数组(我认为),即使在while循环中你不使用数组(只是$username)。 我想要的是什么:回显选择查询OUTSIDE while循环的结果。就像有可能以老式的方式(假设只有1个结果,因此没有必要的while循环):

$result = mysqli_query( $conn, $query );
$record = mysqli_fetch_array( $result );
echo $record['username'];

3 个答案:

答案 0 :(得分:2)

您需要访问对象变量:

echo $stmt->User;

或者您可以保存变量以供日后使用:

$user = $stmt->User;

循环结束后,$user将保留该值。

答案 1 :(得分:1)

您可以使用$stmt->get_result()来执行此操作,例如

$stmt->execute();
$result = $stmt->get_result();

$record = $result->fetch_assoc();
echo $record['username'];

修改

另一种方法是在bind_result

之后调用fetch
$stmt->bind_result($username);
$stmt->fetch()

echo $username;

答案 2 :(得分:0)

旧时尚方式:

print_r($record);

来自php手册:print_r