我正在使用带有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);
这很奇怪。 username是唯一显示的字段。为什么其他列不被返回/绑定?
如果我这样做
SELECT username, firstname, lastname FROM USERS WHERE username = 'test';
直接向数据库显示所有字段,并且所有字段都包含有效数据。
答案 0 :(得分:1)
如果您使用其他变量名称输出用户名,会发生什么?像这样:
SELECT username as user_name,firstname,lastname FROM USERS WHERE username ='test';
然后
$ getRecords-&gt; bind_result($ user_name,$ firstname,$ lastname);
我想知道输入和输出使用相同的名称是否会让人感到困惑?
答案 1 :(得分:1)
我没有运行它,但我注意到你使用相同的变量,$ username用于绑定的param和绑定的结果变量。
可能是结果没有返回任何一个,但$ username显示的值是因为您事先分配它,而不是因为它来自数据库。
尝试使用$ param_user和$ result_user等不同的变量,看看会发生什么。我的猜测是没有返回任何结果,这将指出查询或结果绑定的问题。
答案 2 :(得分:1)
你必须致电
$getRecords->fetch();
在bind_result()
实际获得记录后。
正在输出用户名,因为您已经设置了它,以用作输入参数。