2011-12-22 53 views
2

我创建了一个表格,我尝试将数据上传到MySQL databasem,但提交表单后我收到以下错误..形式张贴到数据库

注意:未定义指数:月C:\ xampp \ htdocs \ auto \ insert_ac.php第14行
注意:未定义索引:listner_name在C:\ xampp \ htdocs \ auto \ insert_ac.php上,第15行
注意:未定义索引:rj_name in C: \ xampp \ htdocs \ auto \ insert_ac.php on line 16
注意:未定义索引:第17行C:\ xampp \ htdocs \ auto \ insert_ac.php中的通道
N otice:未定义指数:今年在C:\ XAMPP \ htdocs中\在线自动\ insert_ac.php 18
注意:未定义指数:国家在C:\ XAMPP \ htdocs中\在线自动\ 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> 

回答

0

除了使用name属性由SeanNieuwoudt指出,你应该也检查请求方法是POST插入数据库之前。如果您不这样做,并且某人决定将您的insert_ac.php页面作为GET请求来查看,它将像以前一样生成相同的通知并插入空白数据。

例如

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

你需要一个 ATTR在表单元素上使用ibute来访问$ _POST中的值。

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

由于它的作品.. :)另外一件事..我如何限制空白条目到数据库。 – 2011-12-22 12:29:52

0

,你应该在你的表单元素的名称属性。

你得到这个错误可能是因为值没有填充。

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'); 
}