从php&代码插入时,数据不会出现在数据库中

时间:2014-05-07 11:41:00

标签: php mysql database comments textarea

我的代码

<?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

请帮助我尝试了一切。

5 个答案:

答案 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}之后?>

之后立即使用{{1}}