2012-03-21 38 views
1

我是面向对象PHP的新手。目前,我正在制作一个登录脚本,并坚持要取回&以回应结果。这是我的脚本:PHP如何在while循环之外回显提取结果

$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(); 

正如你可以看到我不是在脚本中获取上述结果。我在$num !== 1之前的while循环中尝试使用$stmt->fetch()

但是,即使在while循环中不使用数组(只是$username),获取的结果仍然以数组形式存储(我认为)。 我想要的: echo选择查询OUTSIDE while循环的结果。正如有可能在老式的方式(假设只有1条结果,因此没有必要while循环):

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

回答

2

您需要accses到对象变量:

echo $stmt->User; 

也可以保存变量之后:

$user = $stmt->User; 

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

+0

对'$ stmt-> User'没有喜悦,说属性不存在。我用'$ username'代替它,并且工作。非常感谢 :) – Tom 2012-03-21 19:49:10

1

您可以使用$stmt->get_result()要做到这一点,例如

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

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

编辑

另一种方法是调用bind_result后取

$stmt->bind_result($username); 
$stmt->fetch() 

echo $username; 
+0

我试过了,但我得到的方法不存在错误。根据PHP.net,它仅适用于mysqlnd。不知道那是什么,但显然我没有。 – Tom 2012-03-21 19:39:42

+0

你是对的,我已经编辑了答案,包括没有这种依赖性的另一种方法。 – MrCode 2012-03-21 20:53:56

0

旧时尚的方式:

print_r($record); 

从PHP手册:print_r