如果我在正确的路径上,我有点怀疑。我有一个mysql数据库,里面有用户的登录详细信息。我正在制作一个个人资料页面,我希望在那里向用户显示有关用户的信息。我现在正试图返回数据库中有一列的名字。我使用此代码的路径是否正确?
<td>
Firstname
<?php
$stmt = $mysqli->prepare("SELECT firstname FROM login");
$stmt->execute();
$fname = null;
$stmt->bind_result( $fname);
while($stmt->fetch()) {
$firstname = // Code here
echo $firstname;
}
$stmt->close();
$mysqli->close();
?>
</td>
更新:
我试着把代码缩小一点。这段代码实际上会重试用户,但它是数据库中的所有用户,而不仅仅是与我一起登录的用户。如果我只需要我登录的当前用户的名字,那么SELECT查询是否应该使用primarykey?
<td>
Firstname
<?php
$sql ="SELECT firstname FROM login;";
$res = $mysqli->query($sql);
//print($res);
if($res){
while($row = $res->fetch_assoc()){
echo $row['firstname'];
}
}
?>
</td>
您在正确的路径上,但需要将数组分配给一个变量,这样您就可以在作用域中添加列名并删除$fname
的绑定
//$stmt->bind_result($fname);
while($column = $stmt->fetch()) {
$firstname = $column['firstname'];
echo $firstname;
}
或者你可以只使用之前绑定的变量
$stmt->bind_result($fname);
while($stmt->fetch()) {
echo $fname;
}
您可以通过在查询中添加WHERE
条件来优化查询并将tresult限制为仅一个用户,您可以使用用户ID,例如
SELECT firstname FROM login WHERE userid = 1
如果你在玩PHP并试图了解它是如何工作的,那么你就走上了一条很好的道路。如果你计划将此代码部署到互联网上,你会遇到一些问题:
- 你的标记似乎不正确。为什么要把所有的名字放在一个
<td>
中 - 您不应该在标记内部进行SQL查询。如果您希望某一天显示缓存或文本文件的结果,该怎么办?理想情况下,您甚至不会将PHP和HTML混合使用。有些人使用PHP内置的模板功能,但通常更喜欢使用像jade或trick这样的模板语言
- 您的代码对齐不一致
但如果你只是看到PHP可以做什么,那就做得好。继续尝试。对大多数人来说,这是最好的学习方式。其他人喜欢看书,然后尝试一些东西。