未定义的索引,但它在DB中命名?

时间:2014-11-02 16:04:32

标签: php mysql

大家好我刚刚遇到一个我不知道怎么回事的问题,它告诉我我有一个未定义的索引"对于以下内容:

  

注意:未定义的索引:第113行的D:\ xampp \ htdocs \ pages \ service.php中的名称

     

注意:未定义的索引:第114行的D:\ xampp \ htdocs \ pages \ service.php中的注释

     

注意:未定义的索引:在D:\ xampp \ 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"/>'
;}
?>

1 个答案:

答案 0 :(得分: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 injection开放 使用mysqli_* with prepared statementsPDOprepared statements


或:

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