你好,我正在尝试将一个页面连接到MySQL数据库以注册时事通讯。我有3个字段的数据库,id,name,email。数据库名为时事通讯,表名为时讯。一切似乎都很好,但我收到了这个错误
注意:未定义的索引:第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();
?>
错误表示在$_POST[]
数组中找不到索引Name
。这是一个PHP通知,而不是一个停止显示的错误,而是用来传达您正在引用一个不存在的值。如果该值可能为空/null是正常的/预期的,那么可以安全地忽略该通知。
除了这个问题之外,您应该在SQL语句中引用公共值之前对其进行清理,即:
$name = mysql_real_escape_string($_POST['Name']);
$email = mysql_real_escape_string($_POST['Email']);
其他一些注意事项:
在对
mysql_connect()
的调用中,不必将变量$host
、$username
或$password
括在引号中。对mysql_select_db()
的调用中的$db_name
也是如此。它们已经是上面几行中定义的字符串,所以这太过分了。也许在SQL查询之前,对
$_POST[]
中的值进行一些验证是个好主意?这样,如果Name
值为空,则可以输出错误。