否则在选择 $row 时不起作用
Else does not work in selection of $row
我想检查用户是否设置了性别。如果没有,它将显示第一个回波。如果是,它将显示他的性别的回声。
问题是页面只显示第一个回声,即使数据库中设置了性别......我真的不知道为什么它不起作用......
我的代码:
<?php
$username = $_SESSION['username'];
$sql = "
SELECT gender FROM members WHERE username = ?";
$stmt->bind_param('s', $username);
$stmt->execute();
$stmt->bind_result($username);
while ($stmt->fetch()){
if($row['gender'] == ""){
echo "You have not selected your gender yet."; // This is the 1st echo and this is the only one that is displayed
} else {
echo "You selected that you are {$row['gender']}."; // This is not displayed no matter what...
}
}
?>
我哪里错了?
我不是 php 专家,但我认为此代码更适合您,因为我认为 $row 不包含任何内容(我看不到它在任何地方设置的位置,根据文档,bind_result
无论如何都不会那样工作):
$username = $_SESSION['username'];
$stmt = $mysqli->prepare("SELECT gender FROM members WHERE username = ?");
$stmt->bind_param('s', $username);
$stmt->execute();
$stmt->bind_result($gender);
while ($stmt->fetch()){
if(empty($gender)){
echo "You have not selected your gender yet.";
} else {
echo "You selected that you are " . $gender;
}
}
编辑
使用 empty()
而不是 = ""
以防 $gender 返回空值。
编辑 2
我注意到你从不使用 $sql
。我更新了正确语法的代码,假设您的数据库连接称为 $mysqli
.
可能需要查看此处的文档:https://php.net/manual/en/mysqli-stmt.bind-result.php
我想检查用户是否设置了性别。如果没有,它将显示第一个回波。如果是,它将显示他的性别的回声。 问题是页面只显示第一个回声,即使数据库中设置了性别......我真的不知道为什么它不起作用...... 我的代码:
<?php
$username = $_SESSION['username'];
$sql = "
SELECT gender FROM members WHERE username = ?";
$stmt->bind_param('s', $username);
$stmt->execute();
$stmt->bind_result($username);
while ($stmt->fetch()){
if($row['gender'] == ""){
echo "You have not selected your gender yet."; // This is the 1st echo and this is the only one that is displayed
} else {
echo "You selected that you are {$row['gender']}."; // This is not displayed no matter what...
}
}
?>
我哪里错了?
我不是 php 专家,但我认为此代码更适合您,因为我认为 $row 不包含任何内容(我看不到它在任何地方设置的位置,根据文档,bind_result
无论如何都不会那样工作):
$username = $_SESSION['username'];
$stmt = $mysqli->prepare("SELECT gender FROM members WHERE username = ?");
$stmt->bind_param('s', $username);
$stmt->execute();
$stmt->bind_result($gender);
while ($stmt->fetch()){
if(empty($gender)){
echo "You have not selected your gender yet.";
} else {
echo "You selected that you are " . $gender;
}
}
编辑
使用 empty()
而不是 = ""
以防 $gender 返回空值。
编辑 2
我注意到你从不使用 $sql
。我更新了正确语法的代码,假设您的数据库连接称为 $mysqli
.
可能需要查看此处的文档:https://php.net/manual/en/mysqli-stmt.bind-result.php