我试图将数据插入我的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);
}
?>
答案 0 :(得分:2)
这意味着$_POST['comment']
尚未定义。换句话说,您的表单尚未提交名为comment
的字段的值。
所以你要么:
需要向您的用户抛出错误并告诉他们评论是必填字段,并确保在将其提交到数据库之前提供了值
在将其分配给变量之前,检查是否有值。如果没有,请指定默认值。
仅供参考,Please, don't use mysql_*
functions in new code。它们不再被维护and are officially deprecated。请参阅red box?转而了解prepared statements,并使用PDO或MySQLi - this article将帮助您确定哪个。如果您选择PDO here is a good tutorial。
您也可以向SQL injections
开放答案 1 :(得分:1)
当您生成包含表单的HTML文档时,您似乎正在尝试从表单中读取数据。
由于此时尚未提交表格,因此数据不会存在。
你可以:
action
无论哪种方式,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。