如果列有选定的词,则输出数据库信息
Issues outputting database information if a column has a selected word
我正在尝试从我的数据库中输出信息,前提是该记录在 'status' 列中填写了 'Pending'。截至目前,这正在中断,我有多个记录 'Pending'填写,在那一栏。
我做错了什么?
<?php
$con = mysqli_connect("localhost", "root", "", "db");
$run = mysqli_query($con,"SELECT * FROM user_requests ORDER BY id DESC");
$numrows = mysqli_num_rows($run);
if( $numrows > 0) {
while($row = mysqli_fetch_assoc($run)){
$pending_id = $row['status'];
if($pending_id == ["Pending"]){
$pending_id = $row['user_id'];
$pending_firstname = $row['firstname'];
$pending_lastname = $row['lastname'];
$pending_username = $row['username'];
}
}
}
echo $pending_firstname;
?>
更新:
我只得到第一个结果...
if( $numrows > 0) {
while($row = mysqli_fetch_assoc($run)){
$pending_id = $row['status'];
if($pending_id == "Pending"){
$pending_id = $row['user_id'];
$pending_firstname = $row['firstname'];
$pending_lastname = $row['lastname'];
$pending_username = $row['username'];
}
}
}
if ($pending_firstname == true) {
echo $pending_firstname;
} else {
echo "There are no Pending Requests as this time.";
}
?>
无需将字符串放在方括号中进行匹配。
if($pending_id == "Pending")...
好的 - 试试这个代码..
您需要在循环中输出您的用户详细信息,否则它们将被覆盖
if( $numrows ) {
while($row = mysqli_fetch_assoc($run)){
if($row['status'] == "Pending"){
$pending_id = $row['user_id'];
$pending_firstname = $row['firstname'];
$pending_lastname = $row['lastname'];
$pending_username = $row['username'];
echo "$pending_firstname $pending_lastname $pending_username <br>";
}
}
}
看你在一段时间内和另一个 if 语句下声明了 pending_firstname
以及所有变量到 if 语句中。而你在它的范围之外回应 pending_firstname
。这就是您收到此错误的原因。为避免这种情况,首先在全局范围内声明所有变量,然后您就可以从任何地方访问它们。这也是一个很好的做法!
更新
实际上您应该将所有变量声明为数组。并使用 array_push()
方法,您可以将多个数据推送到该数组中,并且您可以在将来使用 foreach
迭代这些数组。
我正在尝试从我的数据库中输出信息,前提是该记录在 'status' 列中填写了 'Pending'。截至目前,这正在中断,我有多个记录 'Pending'填写,在那一栏。
我做错了什么?
<?php
$con = mysqli_connect("localhost", "root", "", "db");
$run = mysqli_query($con,"SELECT * FROM user_requests ORDER BY id DESC");
$numrows = mysqli_num_rows($run);
if( $numrows > 0) {
while($row = mysqli_fetch_assoc($run)){
$pending_id = $row['status'];
if($pending_id == ["Pending"]){
$pending_id = $row['user_id'];
$pending_firstname = $row['firstname'];
$pending_lastname = $row['lastname'];
$pending_username = $row['username'];
}
}
}
echo $pending_firstname;
?>
更新:
我只得到第一个结果...
if( $numrows > 0) {
while($row = mysqli_fetch_assoc($run)){
$pending_id = $row['status'];
if($pending_id == "Pending"){
$pending_id = $row['user_id'];
$pending_firstname = $row['firstname'];
$pending_lastname = $row['lastname'];
$pending_username = $row['username'];
}
}
}
if ($pending_firstname == true) {
echo $pending_firstname;
} else {
echo "There are no Pending Requests as this time.";
}
?>
无需将字符串放在方括号中进行匹配。
if($pending_id == "Pending")...
好的 - 试试这个代码..
您需要在循环中输出您的用户详细信息,否则它们将被覆盖
if( $numrows ) {
while($row = mysqli_fetch_assoc($run)){
if($row['status'] == "Pending"){
$pending_id = $row['user_id'];
$pending_firstname = $row['firstname'];
$pending_lastname = $row['lastname'];
$pending_username = $row['username'];
echo "$pending_firstname $pending_lastname $pending_username <br>";
}
}
}
看你在一段时间内和另一个 if 语句下声明了 pending_firstname
以及所有变量到 if 语句中。而你在它的范围之外回应 pending_firstname
。这就是您收到此错误的原因。为避免这种情况,首先在全局范围内声明所有变量,然后您就可以从任何地方访问它们。这也是一个很好的做法!
更新
实际上您应该将所有变量声明为数组。并使用 array_push()
方法,您可以将多个数据推送到该数组中,并且您可以在将来使用 foreach
迭代这些数组。