首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表格投寄到数据库

表格投寄到数据库
EN

Stack Overflow用户
提问于 2011-12-22 10:51:43
回答 3查看 3.2K关注 0票数 2

我已经创建了一个表单,我试图将数据发布到MySQL数据库,但是在提交表单后,我得到以下错误。

注意:未定义索引:第14行C:\xampp\htdocs\auto\insert_ac.php中的月份

注意:未定义索引: listner_name在第15行的C:\xampp\htdocs\auto\insert_ac.php中

注意:未定义索引: rj_name在第16行的C:\xampp\htdocs\auto\insert_ac.php中

注意:未定义索引:第17行C:\xampp\htdocs\auto\insert_ac.php中的通道

注意:未定义的索引:第18行的C:\xampp\htdocs\auto\insert_ac.php中的年份

注意:未定义的索引:第19行C:\xampp\htdocs\auto\insert_ac.php中的国家( )

当我检查插入到数据库中的空行项时

代码语言:javascript
复制
<?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表单代码是

代码语言:javascript
复制
<!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>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-22 11:31:51

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

例如

代码语言:javascript
复制
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    // go ahead and insert
}
票数 0
EN

Stack Overflow用户

发布于 2011-12-22 10:54:03

您需要表单元素上的名称属性来访问$_POST中的值。

代码语言:javascript
复制
 <input id="month" name="month" type="text" autocomplete="off">
票数 6
EN

Stack Overflow用户

发布于 2011-12-23 10:38:11

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

由于未填充值,可能会出现此错误。

代码语言:javascript
复制
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"]的内容,您必须通过这样做来检查是否存在这样的索引:

代码语言:javascript
复制
if(isset($_POST["test"]))

所以,只需像下面这样使用

代码语言:javascript
复制
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');
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8602789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档