【问题标题】:MYSQL row data won't echo/display in HTML form field(s)MYSQL 行数据不会在 HTML 表单字段中回显/显示
【发布时间】:2013-02-02 04:53:06
【问题描述】:

我的部分任务是创建一个通过 HTML 表单更新特定行数据的表单。我已经成功地从 mysql 数据库中检索了行数据,但是当我尝试在 html 表单的字段中显示特定的行数据(StudentNumber、FirstName、LastName 等)时,它只显示空字段。我可能错过了什么?

这是显示表单的 php 页面的编码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>updating data record</title>
</head> 
<body>

<?php
//connect to the database
  $conn = mysql_connect('localhost', 'root', '');
    if (!$conn) {
    die('Not connected : ' . mysql_error());
}   
    $db_selected = mysql_select_db('ccm3413', $conn);
    mysql_set_charset("utf8",$conn);
    $id = $_GET['id'];

    $result = mysql_query("SELECT * FROM studentinfo WHERE recordID = '$id'");
    while ($row = mysql_fetch_assoc($result)) {
    }

?>

<form id="form1" name="form1" method="post" action="processUpdateRecord.php"> 
  <p> 
    <label>Student Number: 
      <input name="StudentNumber" type="text" id="StudentNumber" size="10" value="<?php echo $row['StudentNumber']; ?>"/> 
    </label> 
  </p> 
  <p> 
    <label>First Name: 
      <input name="FirstName" type="text" id="FirstName" size="20" value="<?php echo $row['FirstName']; ?>"/> 
    </label> 
  </p> 
  <p> 
    <label>Last Name: 
      <input name="LastName" type="text" id="LastName" size="20" value="<?php echo $row['LastName']; ?>"/> 
    </label> 
  </p> 
  <p> 
    <label>Email Address: 
      <input name="EmailAddr" type="text" id="EmailAddr" size="50" value="<?php echo $row['EmailAddr']; ?>"/> 
    </label> 
  </p> 
  <p> 
    <label>Telephone: 
      <input name="PhoneNumber" type="text" id="PhoneNumber" size="20" value="<?php echo $row['PhoneNumber']; ?>"/> 
    </label> 
  </p> 
  <p> 
    <input type="submit" name="Update" id="Update" value="Update" /> 
  </p>

</form>

</body>
</html>

【问题讨论】:

  • 您应该使用 MySQLi 或 PDO,因为 PHP 中的 MySQL 函数已被弃用。
  • $row 是循环的本地变量,在您使用它时为空,您希望从数据库获得多少条记录?
  • @Ethan,虽然非常正确,但作为一个新用户总是被这个问题困扰,这有点烦人。
  • 好的,我使用了 Jari 的代码,但我将 else 语句移到了顶部的 php 块,因为我认为它放错了位置,而且效果很好,很抱歉为此创建了一个新帐户。

标签: php html mysql forms


【解决方案1】:

试试这个代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>updating data record</title>
</head> 
<body>

<?php
//connect to the database
  $conn = mysql_connect('localhost', 'root', '');
    if (!$conn) {
    die('Not connected : ' . mysql_error());
}   
    $db_selected = mysql_select_db('ccm3413', $conn);
    mysql_set_charset("utf8",$conn);
    $id = mysql_real_escape_string($_GET['id']);

    $result = mysql_query("SELECT * FROM studentinfo WHERE recordID = '$id'");
    $student = (mysql_num_rows($result)==1) ? mysql_fetch_assoc($result) : null ; //You expect only 1 student, right?

if (is_array($student)){
?>

<form id="form1" name="form1" method="post" action="processUpdateRecord.php"> 
  <p> 
    <label>Student Number: 
      <input name="StudentNumber" type="text" id="StudentNumber" size="10" value="<?php echo $student['StudentNumber']; ?>"/> 
    </label> 
  </p> 
  <p> 
    <label>First Name: 
      <input name="FirstName" type="text" id="FirstName" size="20" value="<?php echo $student['FirstName']; ?>"/> 
    </label> 
  </p> 
  <p> 
    <label>Last Name: 
      <input name="LastName" type="text" id="LastName" size="20" value="<?php echo $student['LastName']; ?>"/> 
    </label> 
  </p> 
  <p> 
    <label>Email Address: 
      <input name="EmailAddr" type="text" id="EmailAddr" size="50" value="<?php echo $student['EmailAddr']; ?>"/> 
    </label> 
  </p> 
  <p> 
    <label>Telephone: 
      <input name="PhoneNumber" type="text" id="PhoneNumber" size="20" value="<?php echo $student['PhoneNumber']; ?>"/> 
    </label> 
  </p> 
  <p> 
    <input type="submit" name="Update" id="Update" value="Update" /> 
  </p>
</form>
<?php

else {
  echo "The student has not been found" ;
} ?>

</body>
</html>

【讨论】:

  • 这行得通,但是在我将底部的“else”移动到顶部的 php 块之后。非常感谢。
  • 你能告诉我你是怎么做到的吗...比如将“else”从底部移到顶部 php 块?
【解决方案2】:

您需要将表单放在 while 括号内。

【讨论】:

    猜你喜欢
    • 2015-08-20
    • 2013-08-28
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 2016-10-01
    • 2014-05-31
    • 2019-08-19
    相关资源
    最近更新 更多