0

我正在使用带有 php 的 mysqli prepard 查询,代码是:

$retreiveQuery = 'SELECT username, firstname, lastname FROM USERS WHERE username = ?';

if ($getRecords = $con->prepare($retreiveQuery)) {
    $getRecords->bind_param("s", $username);

    $getRecords->execute();        
    $getRecords->bind_result($username, $firstname, $lastname);

echo "<h1>".$username."</h1>
<p><strong>First Name: </strong>".$firstname."
<p><strong>Surname: </strong>".$lastname."
} else {
print_r($con->error);

这很奇怪。用户名是唯一显示的字段。为什么其他列不会被返回/绑定?

如果我做

SELECT username, firstname, lastname FROM USERS WHERE username = 'test';

直接到数据库,显示所有字段,并且都包含有效数据。

4

3 回答 3

1

如果您对用户名的输出使用不同的变量名会发生什么?像这样:

SELECT username as user_name, firstname, lastname FROM USERS WHERE username = 'test';

进而

$getRecords->bind_result($user_name, $firstname, $lastname);

我想知道是否因为输入和输出使用相同的名称而感到困惑?

于 2009-04-08T21:05:31.460 回答
1

我还没有运行它,但我注意到您使用相同的变量 $username 用于绑定参数和绑定结果变量。

可能是结果没有返回其中任何一个,但 $username 显示了一个值,因为您预先分配了它,而不是因为它来自数据库。

尝试使用不同的变量,如 $param_user 和 $result_user,看看会发生什么。我的猜测是不会返回任何结果,这将表明查询或结果绑定存在问题。

于 2009-04-08T21:08:00.393 回答
1

你必须打电话

$getRecords->fetch();

bind_result() 真正得到记录之后。

正在输出用户名,因为您已经将其设置为输入参数。

于 2009-04-08T21:09:34.710 回答