1

我在名为hcp的数据库中有一个表disease,其中包含diiddiseasenamedescrption列。

我想简单地从 HTML 表单中输入;到目前为止,这是我的代码。

<html><head><title>Disease Inssert</title></head>
<body>
<form action="diseaselist.php" method="post">
Disease Name : <input type="text" name="txtDiseaseName" id="textbox" /><br />
Description : <input type="text" name="txtDiseaseDescription" id="textbox" /><br />
<input type="submit" name="btnDiseaseSubmit" id="button"/>

</form>
</body>
</html>

<?php
mysql_connect("localhost","root","");
mysql_select_db("hcp");

if($_REQUEST['btnDiseaseSubmit'])
{
$queryDiseaseInsert="INSERT INTO  disease (`diseasename` ,`description`) VALUES ('".$_REQUEST['txtDiseaseName']."', '".$_REQUEST['txtDiseaseDescription']."');";

$resultDI=mysql_query($queryDiseaseInsert) or die(mysql_error());
}
?>

提交后,页面重定向到diseaselist.php,但数据未保存在数据库中。

任何人都可以看到我的查询有什么问题吗?

4

3 回答 3

2

表单直接提交到列表中<form action="diseaselist.php" method="post"> 。保存到数据库的代码永远不会执行。

您可以创建一个中间页面,假设process.php包含用于添加到数据库的代码:

<?php
mysql_connect("localhost","root","");
mysql_select_db("hcp");

if($_REQUEST['btnDiseaseSubmit'])
{
    $queryDiseaseInsert="INSERT INTO  disease (`diseasename` ,`description`) VALUES ('". mysql_real_escape_string($_REQUEST['txtDiseaseName'])."', '".mysql_real_escape_string($_REQUEST['txtDiseaseDescription'])."');";

   $resultDI=mysql_query($queryDiseaseInsert) or die(mysql_error());
   // insert is complete, redirect to list
   header("location: diseaselist.php");
} else {
   // the form was not submitted
   // redirect back to the form or show error message
}

?>

变化:

  • 添加了 mysql_real_escape_string
  • 插入后,发送头部指令将浏览器重定向到列表

现在,在您当前的文件中,只保留 html 代码并更新action属性以将表单提交给process.php脚本:

<html><head><title>Disease Inssert</title></head>
<body>
<form action="process.php" method="post">
Disease Name : <input type="text" name="txtDiseaseName" id="textbox" /><br />
Description : <input type="text" name="txtDiseaseDescription" id="textbox" /><br />
<input type="submit" name="btnDiseaseSubmit" id="button"/>

</form>
</body>
</html>

变化:

  • 将表单action属性更新为process.php
于 2012-04-24T06:27:25.703 回答
2

您的脚本存在一些问题。首先是您在尝试插入数据之前没有检查数据。HTML 表单的典型流程如下所示:

  1. 显示形式。用户输入数据并提交。
  2. 数据被发送到服务器(应该)检查所有需要的数据。如果没有显示,用户(通常)会收到带有错误的表单。
  3. 这种情况一直持续到用户放弃或提交完全有效的表格。

现在说了以上,这里是你的形式:

<?php

  $mysql = mysql_connect("localhost","root","");   // assign to variable
  mysql_select_db("hcp", $mysql);

  // Get into the habit of using $_POST and $_GET instead of $_REQUEST
  if(isset($_POST['btnDiseaseSubmit']) && !empty($_POST['btnDiseaseSubmit'])) 
  {  // Form was completely submitted
    $sql = "INSERT INTO  disease (`diseasename` ,`description`) VALUES ('".$_POST['txtDiseaseName']."', '".$_POST['txtDiseaseDescription']."');";  // No need for massive variable names

    $resultDI = mysql_query($sql, $mysql) or die(mysql_error());

    mysql_close($mysql);    // Close database connection - cleans things up
    echo "Successfolly ran database query!";
  } else {  // Form was not completely submitted, if at all - display form.
?>
<html>
  <head><title>Disease Inssert</title></head>
  <body>
    <!-- If action is not present, the form will submit to the current page. ie. If current page is a.php and we leave out action, the form will submit to a.php! -->
    <form method="post">
      Disease Name : <input type="text" name="txtDiseaseName" id="textbox" /><br />
      Description : <input type="text" name="txtDiseaseDescription" id="textbox" /><br />
      <input type="submit" name="btnDiseaseSubmit" id="button"/>
    </form>
  </body>
</html>
<?php
  }
?>

这对你来说应该很好。请注意代码中的注释,以便您知道我做了什么以及为什么这样做。谷歌搜索更多示例。你很快就会明白这一切。

于 2012-04-24T06:33:59.287 回答
0

diseaselist.php页面上尝试使用以下代码

<?php

   mysql_connect("localhost", "root", "");
mysql_select_db("hcp");

if (isset ($_REQUEST['btnDiseaseSubmit'])) {
    $queryDiseaseInsert = "INSERT INTO disease ('diseasename' , 'description') VALUES('" . $_REQUEST['txtDiseaseName'] . "','" . $_REQUEST['txtDiseaseDescription'] . "')";

    $resultDI = mysql_query($queryDiseaseInsert) or die(mysql_error());
}
?>
于 2012-04-24T06:28:35.390 回答