嗨,伙计们,我只是遇到了一个问题,我不知道如何解决,它告诉我我有一个"未定义的索引";对于以下内容:
注意:第113行D:''examplep''htdocs''pages''service.php中的未定义索引:名称
注意:未定义的索引:在第114行的D:''examplep''htdocs''pages''service.php中的注释
注意:未定义的索引:在D:''examplep''htdocs''pages''serv 中提交
但它清楚地列在我的数据库中:http://puu.sh/cAlHz/56afbd7e80.png
评论的特点是工作和诸如此类的一切,但它向我展示了这个错误。知道吗?
<?php
mysql_connect("localhost","root", "");
mysql_select_db("wd6__0100348514");
$name=$_POST['name'];
$comment=$_POST['comment'];
$submit=$_POST['submit'];
$dbLink = mysql_connect("localhost", "root", "");
mysql_query("SET character_set_client=utf8", $dbLink);
mysql_query("SET character_set_connection=utf8", $dbLink);
if($submit)
{
if($name&&$comment)
{
$insert=mysql_query("INSERT INTO comment (name,comment) VALUES ('$name','$comment') ");
echo "<meta HTTP-EQUIV='REFRESH' content='0; url=service.php'>";
}
else
{
echo "please fill out all fields";
}
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Comment box</title>
</head>
<body>
<center>
<form action="service.php" method="POST">
<table>
<tr><td>Name: <br><input type="text" name="name"/></td></tr>
<tr><td colspan="2">Comment: </td></tr>
<tr><td colspan="5"><textarea name="comment" rows="10" cols="50"></textarea></td></tr>
<tr><td colspan="2"><input type="submit" name="submit" value="Comment"></td></tr>
</table>
</form>
<?php
$dbLink = mysql_connect("localhost", "root", "");
mysql_query("SET character_set_results=utf8", $dbLink);
mb_language('uni');
mb_internal_encoding('UTF-8');
$getquery=mysql_query("SELECT * FROM comment ORDER BY id DESC");
while($rows=mysql_fetch_assoc($getquery))
{
$id=$rows['id'];
$name=$rows['name'];
$comment=$rows['comment'];
echo $name . '<br/>' . '<br/>' . $comment . '<br/>' . '<br/>' . '<hr size="1"/>'
;}
?>
此代码块:(还请参阅我的脚注关于未定义索引警告)
if($submit)
{
if($name&&$comment)
{
可以并且应该用isset()
和empty()
替换,同时在代码执行过程中使用大括号。
<?php
mysql_connect("localhost","root", "");
mysql_select_db("wd6__0100348514");
if(isset($_POST['submit'])
&& !empty($_POST['name'])
&& !empty($_POST['comment']) ){
$name=$_POST['name'];
$comment=$_POST['comment'];
$dbLink = mysql_connect("localhost", "root", "");
mysql_query("SET character_set_client=utf8", $dbLink);
mysql_query("SET character_set_connection=utf8", $dbLink);
$insert=mysql_query("INSERT INTO comment (name,comment) VALUES ('$name','$comment') ");
echo "<meta HTTP-EQUIV='REFRESH' content='0; url=service.php'>";
}
else
{
echo "please fill out all fields";
}
但是,您使用的是不推荐使用的库。
此外,您的代码对SQL注入是开放的
将mysqli_*
与准备好的语句一起使用,或将PDO与准备好的报表一起使用
或:
if(isset($_POST['submit'])){
if(!empty($_POST['name']) && !empty($_POST['comment']) ){
$name=$_POST['name'];
$comment=$_POST['comment'];
$dbLink = mysql_connect("localhost", "root", "");
mysql_query("SET character_set_client=utf8", $dbLink);
mysql_query("SET character_set_connection=utf8", $dbLink);
$insert=mysql_query("INSERT INTO comment (name,comment) VALUES ('$name','$comment') ");
echo "<meta HTTP-EQUIV='REFRESH' content='0; url=service.php'>";
}
else
{
echo "please fill out all fields";
}
}
脚注:
在我看来,您的整个代码都是在同一个页面中运行的,这就是为什么页面一加载就会收到未定义的索引警告。
此外,还有一个建议:您使用的是<form action="service.php" method="POST">
,可以更改为<form action="" method="POST">