我在使用php将mysql数据加载到选项框时遇到问题。这是我的代码:
<?php
$con = mysql_connect("localhost","myuname","mypassword");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("school", $con);
$idnum= mysql_real_escape_string($_POST['idnum']);
$result = mysql_query("SELECT * FROM student WHERE IDNO='$idnum'");
?>
<?php while ( $row = mysql_fetch_array($result) ) { ?>
<tr>
<td width="30" height="35"><font size="2">*I D Number:</td>
<td width="30"><input name="idnum" type="text" maxlength="5" value="<?php echo $row["IDNO"]; ?>" readonly="readonly"></td>
</tr>
我的问题是在这里加载:
<td><font size="2">Gender</td>
<td>
<select name="gender" id="gender">
<font size="2">
<option value="<?php echo $line['IDNO']; ?> "><?php $line['GENDER'] ; ?></option>
</select></td></td>
表格如下:
IDNO | GENDER
123 | M
321 | F
我应该做什么?加载与IDNO对应的确切性别?
答案 0 :(得分:0)
如果我理解,你的脚本会加载两行而不是一行。无论如何,这有点奇怪,因为你有一个非常具体的查询(SELECT * FROM student WHERE IDNO='$idnum'
)...所以,你为什么不把它改成这个?:SELECT * FROM student WHERE IDNO='$idnum' LIMIT 1
所以你现在可以确定它会只加载一行。
再见!
答案 1 :(得分:0)
注意:您错误地使用$line
而不是$row
作为选项,因此无法获得结果。
注2:从查询中看,您只需提取一条记录:
"SELECT * FROM student WHERE IDNO = '$idnum'"
因此不需要循环(我假设IDNO
是表的主键)。但是,如果要读取表的所有记录,则查询应如下所示:
"SELECT * FROM student"
如何进行:
将选择框 放在 之前while
循环:
<select name="gender" id="gender">
然后您的while
循环选项:
<?php while ( $row = mysql_fetch_array($result) ) { ?>
<option value="<?php echo $row['IDNO']; ?> "><?php $row['GENDER'] ; ?></option>
关闭while
循环
<?php } ?>
最后关闭选择框
</select>
总而言之,你的代码应该看起来像这样(不包括数据库内容):
<select name="gender" id="gender">
<?php while ( $row = mysql_fetch_array($result) ) { ?>
<option value="<?php echo $row['IDNO']; ?> "><?php $row['GENDER'] ; ?></option>
<?php } ?>
</select>