PHP 没有正确回显下拉菜单的值
PHP not Echoing Values for Drop Down Correctly
我目前正在尝试使用 PHP 和 MYSQL 从头开始创建票务系统。我想要一个下拉列表,允许您根据 MYSQL 中的用户列表向用户分配票证。目前这是我必须使用选项填充的代码:
$sqlq1 = "SELECT fname, lname FROM ticket_users";
$query = mysql_query($sqlq1);
$array = mysql_fetch_array($query);
foreach($array as $row){
echo '<option value ='."$row[fname]".'>'.$row[fname].$row[lname].'</option>';
}
我遇到的问题有三方面:
- 代码仅从 SQL
的第一行开始打印
- 代码不循环等于用户记录数
- 当代码打印第一行的信息时,它只打印每个字段的第一个字符并将它们相乘。
输出如下所示:
<h3> Assign To: <select name="assignee">
<option value =J>JJ</option>
<option value =J>JJ</option>
<option value =F>FF</option>
<option value =F>FF</option>
</select></h3>
这就是数组的 print_r 的样子:
Array ( [0] => Jim [fname] => Jim [1] => Frail [lname] => Frail )
这是 var 转储:
array(4) { [0]=> string(3) "Jim" ["fname"]=> string(3) "Jim" [1]=> string(5) "Frail" ["lname"]=> string(5) "Frail" }
我什至不确定如何寻找这个问题的解决方案,所以希望我的标题也能帮助其他人找到解决方案。
在此先感谢您的帮助。
PS。在查看它之后,我已经能够确定 J 全部来自第一行的名字,所有 F 都来自第一行的姓氏。希望这有帮助。
您需要一个 while
循环顶部遍历您的记录集。这样你每行拉一条记录并回显
$sqlq1 = "SELECT fname, lname FROM ticket_users";
$query = mysql_query($sqlq1);
while($row = mysql_fetch_array($query)){
echo '<option value ="' . $row['fname'] . '">' . $row['fname'] . $row['lname'] . '</option>';
}
引用可能会很混乱,我总是喜欢在 echo 块之外设置变量。 while循环节省了一些代码。
试试这个:
$sqlq1 = "SELECT fname, lname FROM ticket_users";
$query = mysql_query($sqlq1);
while($row = mysql_fetch_array($query)){
$fname = $row['fname']; // you missed the single-quotes
$lname = $row['lname'];
echo "<option value ='$fname'>$fname $lname</option>";
}
mysql_fetch_array 将结果行作为关联数组、数值数组或两者获取。如果你想获取查询返回的所有记录,你需要使用 while 循环类似于:
while($array = mysql_fetch_array($query)){
echo '<option value ='."$array[fname]".'>'.$array[fname].$array[lname].'</opton>';
}
我目前正在尝试使用 PHP 和 MYSQL 从头开始创建票务系统。我想要一个下拉列表,允许您根据 MYSQL 中的用户列表向用户分配票证。目前这是我必须使用选项填充的代码:
$sqlq1 = "SELECT fname, lname FROM ticket_users";
$query = mysql_query($sqlq1);
$array = mysql_fetch_array($query);
foreach($array as $row){
echo '<option value ='."$row[fname]".'>'.$row[fname].$row[lname].'</option>';
}
我遇到的问题有三方面:
- 代码仅从 SQL 的第一行开始打印
- 代码不循环等于用户记录数
- 当代码打印第一行的信息时,它只打印每个字段的第一个字符并将它们相乘。
输出如下所示:
<h3> Assign To: <select name="assignee">
<option value =J>JJ</option>
<option value =J>JJ</option>
<option value =F>FF</option>
<option value =F>FF</option>
</select></h3>
这就是数组的 print_r 的样子:
Array ( [0] => Jim [fname] => Jim [1] => Frail [lname] => Frail )
这是 var 转储:
array(4) { [0]=> string(3) "Jim" ["fname"]=> string(3) "Jim" [1]=> string(5) "Frail" ["lname"]=> string(5) "Frail" }
我什至不确定如何寻找这个问题的解决方案,所以希望我的标题也能帮助其他人找到解决方案。
在此先感谢您的帮助。
PS。在查看它之后,我已经能够确定 J 全部来自第一行的名字,所有 F 都来自第一行的姓氏。希望这有帮助。
您需要一个 while
循环顶部遍历您的记录集。这样你每行拉一条记录并回显
$sqlq1 = "SELECT fname, lname FROM ticket_users";
$query = mysql_query($sqlq1);
while($row = mysql_fetch_array($query)){
echo '<option value ="' . $row['fname'] . '">' . $row['fname'] . $row['lname'] . '</option>';
}
引用可能会很混乱,我总是喜欢在 echo 块之外设置变量。 while循环节省了一些代码。
试试这个:
$sqlq1 = "SELECT fname, lname FROM ticket_users";
$query = mysql_query($sqlq1);
while($row = mysql_fetch_array($query)){
$fname = $row['fname']; // you missed the single-quotes
$lname = $row['lname'];
echo "<option value ='$fname'>$fname $lname</option>";
}
mysql_fetch_array 将结果行作为关联数组、数值数组或两者获取。如果你想获取查询返回的所有记录,你需要使用 while 循环类似于:
while($array = mysql_fetch_array($query)){
echo '<option value ='."$array[fname]".'>'.$array[fname].$array[lname].'</opton>';
}