0

您好,我正在尝试将页面连接到 MySQL 数据库以进行时事通讯注册。我有 3 个字段的数据库,id,name,email。数据库名为 newsletter,表名为 newsletter。一切似乎都很好,但我收到了这个错误

注意:未定义索引:第 12 行 C:\wamp\www\insert.php 中的名称 注意:未定义索引:第 13 行 C:\wamp\www\insert.php 中的名称

这是我的表单代码。

<form action="insert.php" method="post">
<input type="text" value="Name" name="Name" id="Name" class="txtfield" onblur="javascript:if(this.value==''){this.value=this.defaultValue;}" onfocus="javascript:if(this.value==this.defaultValue){this.value='';}" />
<input type="text" value="Enter Email Address"  name="Email" id="Email" class="txtfield" onblur="javascript:if(this.value==''){this.value=this.defaultValue;}" onfocus="javascript:if(this.value==this.defaultValue){this.value='';}" />
<input type="submit" value="" class="button" />
</form>

这是我的 insert.php 文件。

<?php
$host="localhost"; // Host name 
$username="root"; // Mysql username 
$password=""; // Mysql password 
$db_name="newsletter"; // Database name 
$tbl_name="newsletter"; // 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 
$name=$_POST['Name'];
$email=$_POST['Email'];

// Insert data into mysql 
$sql="INSERT INTO $tbl_name(name, email)VALUES('$name', '$email')";
$result=mysql_query($sql);

// 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";
 }
?> 

 <?php 
// close connection 
mysql_close();
?>
4

1 回答 1

0

该错误表示在数组Name中找不到索引。$_POST[]这是一个 PHP 通知,而不是显示停止错误,而是旨在传达您正在引用一个不存在的值。如果正常/预期此值可能为空/null,则可以安全地忽略该通知。

除了这个问题,您应该在 SQL 语句中引用之前清理公共值,即:

$name = mysql_real_escape_string($_POST['Name']);
$email = mysql_real_escape_string($_POST['Email']);

其他一些注意事项:

  • 在对它的调用中,mysql_connect()不需要包装变量或引号。in call to也是如此。它们已经是上面几行中定义的字符串,所以这是多余的。$host$username$password$db_namemysql_select_db()

  • $_POST[]也许在 SQL 查询之前对in 的值进行一些验证是个好主意?这样,例如,如果Name值为空,则可以输出错误。

于 2013-06-29T22:49:37.430 回答