将数据插入mysql数据库

时间:2013-03-18 12:34:12

标签: php mysql

我试图将数据插入我的mysql数据库。它成功插入数据但问题是我每次加载页面时都会收到以下错误。

   Notice: Undefined index: comment in 
   C:\wamp\www\CMS\addnews.php on line 42
   Call Stack
   #    Time    Memory  Function    Location
   1    0.0004  674184  {main}( )   ..\addnews.php:0

我知道mysql扩展名是正式折旧的,所以请不要对此发表评论。

这是我的代码       

               <form id="insNews" name="insNews" method="POST" action="addnews.php">


                           <textarea rows="20" cols="90" name="comment"></textarea>
                           <input type="submit" name="InsertNews" id="InsertNews">
                       <?php
                          include 'db.php';
                          $comment=$_POST['comment']; // **ERROR HERE**
                          $tablename="news";
                          $sql="INSERT INTO $tablename(news_content)VALUES('$comment')";

                             if(isset($_POST['InsertNews'])) 
                             {
                             mysql_query($sql);
                            }

                      ?>

4 个答案:

答案 0 :(得分:2)

这意味着$_POST['comment']尚未定义。换句话说,您的表单尚未提交名为comment的字段的值。

所以你要么:

  1. 需要向您的用户抛出错误并告诉他们评论是必填字段,并确保在将其提交到数据库之前提供了值

  2. 在将其分配给变量之前,检查是否有值。如果没有,请指定默认值。

  3. 仅供参考,Please, don't use mysql_* functions in new code。它们不再被维护and are officially deprecated。请参阅red box?转而了解prepared statements,并使用PDOMySQLi - this article将帮助您确定哪个。如果您选择PDO here is a good tutorial

    您也可以向SQL injections

    开放

答案 1 :(得分:1)

当您生成包含表单的HTML文档时,您似乎正在尝试从表单中读取数据。

由于此时尚未提交表格,因此数据不会存在。

你可以:

  1. 将表单处理移至其他脚本,并在action
  2. 中设置该脚本的URI
  3. 在现有脚本中分支您的逻辑。测试请求方法是否为POST,然后决定是否要处理表单数据和/或根据该表单显示表单。
  4. 无论哪种方式,test to see if the array keys exist在尝试阅读之前。如果他们不这样做,请提供您自己的错误状态,而不是检查用户的原始PHP错误。

答案 2 :(得分:1)

您必须检查$ _POST ['comment']是否成功,然后执行查询

if isset($_POST['comment']){
$comment=$_POST['comment'];
$tablename="news";
$sql="INSERT INTO $tablename(news_content)VALUES('$comment')";

     mysql_query($sql);

}

答案 3 :(得分:0)

您必须检查变量是否存在。

<form id="insNews" name="insNews" method="POST" action="addnews.php">
    <textarea rows="20" cols="90" name="comment"></textarea>
    <input type="submit" name="InsertNews" id="InsertNews">
</form>

<?php
include 'db.php';
if (!empty($_POST['comment'])) {
    $comment   = $_POST['comment']; // **ERROR HERE**
    $tablename = "news";
    $sql="INSERT INTO $tablename(news_content)VALUES('" . mysql_real_escape_string($comment) . "')";

    if(isset($_POST['InsertNews'])) 
    {
        mysql_query($sql);
    }
}

&GT;

但我想通知你,不推荐使用mysql_ * lib。请改用PDO或mysqli。 另外,要注意Sql注入,如果要使用mysql_ *函数,请使用mysql_real_escape_string。