我的代码
<?php
require('connect.php');
$name=$_POST['name'];
$comment=$_POST['comment'];
$submit=$_POST['submit'];
if($submit){
if($name&&$comment) {
$insert=mysql_query("INSERT INTO comment (name,comment) VALUES ('$name','$comment')");
}
else {
echo" please fill out the fields";
}
}
?>
<html>
<head>
<title>
The comment box
</title>
</head>
<body>
<form action="mainpage.php" method="POST">
<table>
<tr><td>Name:</td><td><input type="text" name="name"/></td></tr>
<tr><td colspan="2">Comment:</td></tr>
<tr><td colspan="2"><textarea name="comment"></textarea></td></tr>
<tr><td colspan="2"><input type="submit" name="submit" value="comment"/></td></tr>
</table>
</form>
</body>
</html>
这是非常简单的代码,当我打开文件时,我收到了这些错误:
但是我在textarea中添加了一些东西后它们就消失了,但是插入的数据并没有进入数据库。
Notice: Undefined index: name in C:\xampp\htdocs\test\mainpage.php on line 5
Notice: Undefined index: comment in C:\xampp\htdocs\test\mainpage.php on line 6
Notice: Undefined index: submit in C:\xampp\htdocs\test\mainpage.php on line 7
请帮助我尝试了一切。
答案 0 :(得分:2)
更改
<form action="mainpage.php" method="POST">
到
<form action="mainpage.php" method="post">
可能的(不区分大小写)值为get
(默认值)和post
。
而不是
$submit=$_POST['submit'];
if($submit){
,尝试使用if (!empty($_POST))
在尝试访问通过表单发布的变量之前,您必须使用isset()
检查它是否已设置。因为,在您第一次访问页面而未提交表单时,由于未发布值,因此会抛出错误。
将代码更改为:
<?php
require('connect.php');
if(!empty($_POST))
{
if(isset($_POST['name']))
$name=$_POST['name'];
if(isset($_POST['comment']))
$comment=$_POST['comment'];
$insert=mysql_query("INSERT INTO comment (name,comment) VALUES ('$name','$comment')");
}
else {
echo" please fill out the fields";
}
?>
答案 1 :(得分:2)
请勿使用$var = $_POST['sth']
。使用此:
$sth = null;
if(isset($_POST['sth'])) {
$sth = $_POST['sth'];
}
或者,更短的方式:
$sth = isset($_POST['sth']) ? $_POST['sth'] : null;
您也可以使用''
或false
代替null
替换它:
$name=$_POST['name'];
$comment=$_POST['comment'];
$submit=$_POST['submit'];
用这个:
$name = issset($_POST['name']) ? addslashes($_POST['name']) : false;
$comment = isset($_POST['comment']) ? addslashes($_POST['comment']) : false;
$submit = isset($_POST['submit']) ? addslashes($_POST['submit']) : false;
要检查是否存在mysql错误,请替换此行:
$insert=mysql_query("INSERT INTO comment (name,comment) VALUES ('$name','$comment')");
用这个:
$insert=mysql_query("INSERT INTO comment (name,comment) VALUES ('$name','$comment')") or die(mysql_error());
答案 2 :(得分:1)
<?php
require('connect.php');
if(isset($_POST)){ //use condition for post
$name=$_POST['name'];
$comment=$_POST['comment'];
$submit=$_POST['submit'];
if($submit){
if($name&&$comment){
$insert=mysql_query("INSERT INTO comment (name,comment) VALUES ('$name','$comment')");
}
else{
echo" please fill out the fields";
}
}
}
?>
<html>
<head>
<title>
The comment box
</title>
</head>
<body>
<form action="mainpage.php" method="POST">
<table>
<tr><td>Name:</td><td><input type="text" name="name"/></td></tr>
<tr><td colspan="2">Comment:</td></tr>
<tr><td colspan="2"><textarea name="comment"></textarea></td></tr>
<tr><td colspan="2"><input type="submit" name="submit" value="comment"/></td></tr>
</table>
</form>
</body>
</html>
答案 3 :(得分:1)
您可以将代码重写为,添加isset()
。
if(isset($_POST['submit'])){
$name= $_POST['name'];
$comment= $_POST['comment'];
if(!empty($name) && !empty($comment)){
$insert=mysql_query("INSERT INTO `comment` (`name`,`comment`) VALUES ('$name','$comment')") or die(mysql_error());
}else{
echo" please fill out the fields";
}
}
注意:使用mysqli_ *或PDO函数而不是使用mysql_ *函数(不建议使用)
答案 4 :(得分:0)
你应该检查你是否张贴了表格
在if($_POST)
<?PHP
和}
之后?>