【问题标题】:form posting to database表格张贴到数据库
【发布时间】:2012-01-26 00:43:52
【问题描述】:

我创建了一个表单,我正在尝试将数据发布到 MySQL 数据库,但在提交表单后我收到以下错误..

注意:未定义索引:C:\xampp\htdocs\auto\insert_ac.php 第 14 行中的月份
注意:未定义索引:第 15 行 C:\xampp\htdocs\auto\insert_ac.php 中的 listner_name
注意:未定义的索引:第 16 行 C:\xampp\htdocs\auto\insert_ac.php 中的 rj_name
注意:未定义索引:第 17 行 C:\xampp\htdocs\auto\insert_ac.php 中的通道
注意:未定义索引:C:\xampp\htdocs\auto\insert_ac.php 第 18 行中的年份
注意:未定义索引:C:\xampp\htdocs\auto\insert_ac.php 中第 19 行中的国家/地区

当我检查插入到我的数据库中的空白行条目时

<?php

$host="localhost"; // Host name
$username="root"; // Mysql username`
$password=""; // Mysql password
$db_name="auto"; // Database name
$tbl_name="song_request"; // Table name

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

// Get values from form
$month=mysql_real_escape_string($_POST['month']);
$listner_name=mysql_real_escape_string($_POST['listner_name']);
$rj_name=mysql_real_escape_string($_POST['rj_name']);
$channel=mysql_real_escape_string($_POST['channel']);
$year=mysql_real_escape_string($_POST['year']);
$country=mysql_real_escape_string($_POST['country']);

// Insert data into mysql

$sql="INSERT INTO song_request (month, listner_name, rj_name, channel, year, country)VALUES('$month', '$listner_name', '$rj_name', '$channel', '$year', '$country')";
$result=mysql_query($sql) or die ('error Updating database');

// if successfully insert data into database, displays message "Successful".
if($result){
echo "Successful";
echo "<BR>";
echo "<a href='index.html'>Back to main page</a>";
}

else {
echo "ERROR";
}

// close connection
mysql_close();
?>

我的 HTML 表单代码是

<!DOCTYPE html>

<html lang="en">
<head>
  <meta charset="utf-8">

  <title>Radio Mantra Song Request</title>
  <link href="css/jquery.autocomplete.css" rel="stylesheet" type="text/css">
  <link href="css/main.css" rel="stylesheet" type="text/css">
  <script type="text/javascript" src="js/jquery-1.5.2.min.js">
</script>
  <script type="text/javascript" src="js/jquery.autocomplete.pack.js">
</script>
  <script type="text/javascript" src="js/script.js">
</script>
</head>

<body>
  <div class="container">
    <form name="form" method="post" action="insert_ac.php">
      <p><label>Location:</label> <input id="month" type="text" autocomplete="off"></p>

      <p><label>Listner Name:</label> <input id="listner_name" type="text" autocomplete=
      "off"></p>

      <p><label>RJ Name:</label> <input id="rj_name" type="text" autocomplete="off"></p>

      <p><label>Channel:</label> <input id="channel" type="text" autocomplete="off"></p>

      <p><label>Show Name:</label> <input id="year" type="text" autocomplete="off"></p>

      <p><label>Song:</label> <input id="country" type="text" autocomplete="off"></p>

      <h2>Radio Mantra</h2>

      <table>
        <tr>
          <td align="center"><input type="submit" name="submit" value="Submit"></td>
        </tr>
      </table>
    </form>
  </div>
</body>
</html>

【问题讨论】:

    标签: php database forms


    【解决方案1】:

    您需要表单元素上的 name 属性才能访问 $_POST 中的值。

     <input id="month" name="month" type="text" autocomplete="off">
    

    【讨论】:

    • 谢谢它的作品.. :) 还有一件事.. 我怎样才能将空白条目限制在数据库中。
    【解决方案2】:

    除了使用 SeanNieuwoudt 指出的 name 属性外,您还应该在插入数据库之前检查请求方法是否为 POST。如果您不这样做并且有人决定将您的 insert_ac.php 页面视为 GET 请求,它将生成与以前相同的通知并插入空白数据。

    例如

    if($_SERVER['REQUEST_METHOD'] == 'POST')
    {
        // go ahead and insert
    }
    

    【讨论】:

      【解决方案3】:

      您的表单元素中应该有一个 name 属性。

      您收到此错误可能是因为未填充值。

      Notice: Undefined index: month in C:\xampp\htdocs\auto\insert_ac.php on line 14
      Notice: Undefined index: listner_name in C:\xampp\htdocs\auto\insert_ac.php on line 15
      Notice: Undefined index: rj_name in C:\xampp\htdocs\auto\insert_ac.php on line 16
      Notice: Undefined index: channel in C:\xampp\htdocs\auto\insert_ac.php on line 17
      Notice: Undefined index: year in C:\xampp\htdocs\auto\insert_ac.php on line 18
      Notice: Undefined index: country in C:\xampp\htdocs\auto\insert_ac.php on line 19
      

      如果你有类似$_POST["test"]的东西,你必须通过这样做来检查这样的索引是否存在:

      if(isset($_POST["test"]))
      

      所以像下面这样使用

      if(isset($_POST['submit']))
      {
      $month=mysql_real_escape_string($_POST['month']);
      $listner_name=mysql_real_escape_string($_POST['listner_name']);
      $rj_name=mysql_real_escape_string($_POST['rj_name']);
      $channel=mysql_real_escape_string($_POST['channel']);
      $year=mysql_real_escape_string($_POST['year']);
      $country=mysql_real_escape_string($_POST['country']);
      
      // Insert data into mysql
      
      $sql="INSERT INTO song_request (month, listner_name, rj_name, channel, year, country)VALUES('$month', '$listner_name', '$rj_name', '$channel', '$year', '$country')";
      $result=mysql_query($sql) or die ('error Updating database');
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-25
        • 2015-02-09
        • 2019-10-22
        • 2017-01-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多