Php 将表单连接到数据库时出错

Php 将表单连接到数据库时出错,php,mysql,Php,Mysql,您好,我正在尝试将一个页面连接到MySQL数据库,以便注册新闻稿。我有3个字段的数据库,id,姓名,电子邮件。数据库名为newsletter,表名为newsletter。一切似乎都很好,但我得到了这个错误 注意:第12行C:\wamp\www\insert.php中的未定义索引:Name 注意:第13行C:\wamp\www\insert.php中的未定义索引:Name 这是我的表格代码 <form action="insert.php" method="post"> <inp

您好,我正在尝试将一个页面连接到MySQL数据库,以便注册新闻稿。我有3个字段的数据库,id,姓名,电子邮件。数据库名为newsletter,表名为newsletter。一切似乎都很好,但我得到了这个错误

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

这是我的表格代码

<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();
?>

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

除此之外,您还应该在SQL语句中引用之前清理公共值,即:

$name = mysql_real_escape_string($_POST['Name']);
$email = mysql_real_escape_string($_POST['Email']);
其他一些注意事项:

  • 在调用
    mysql\u connect()
    时,无需将变量
    $host
    $username
    $password
    括在引号中。调用
    mysql\u select\u db()
    中的
    $db\u name
    也是如此。它们已经是上面几行中定义的字符串,因此这是多余的

  • 也许在SQL查询之前,对
    $\u POST[]
    中的值进行一些验证是个好主意?例如,如果
    Name
    值为空,则可以通过这种方式输出错误


显示
insert.php
文件请编辑帖子以包含php文件,尤其是有问题的行。另外,您是否在表中使用索引?错误位于insert.php文件中,我们需要查看其代码才能找到问题。Name!=表中的名称??当每个人都发帖时,我正试图正确加载php文件。现在开始了