数据库未定义索引

时间:2013-12-06 08:17:25

标签: php mysql

再次是我。我试图对我的网站发表评论,显然它正在工作:/,就像在数据库中它显示插入的值,但每次刷新页面或转到页面时,我都会收到此错误:

注意:未定义索引:第38行/home/kall0467/public_html/svale_rejser/comments.php中的user_comment_name 注意:未定义索引:第39行/home/kall0467/public_html/svale_rejser/comments.php中的user_comment_message已添加1条记录

我一直想弄清楚它2天。这是代码:

<?php


$con = mysql_connect("URL","username","password");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("database", $con);

$result = mysql_query("SELECT * FROM comments");

echo "<table border='1'>
<tr>
<th>Username</th>
<th>Comment</th>
</tr>";

while($row = mysql_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['username'] . "</td>";
  echo "<td>" . $row['comment'] . "</td>";
  echo "</tr>";
  }
echo "</table>";

mysql_close($con);

$con1=mysqli_connect("url","username","password","db-name");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
   $user_comment_name = $_POST['user_comment_name'];
   $user_comment_message = $_POST['user_comment_message'];
$sql1="INSERT INTO user_comment (user_comment_name, user_comment_message)
VALUES
('$user_comment_name','$user_comment_message')";

if (!mysqli_query($con1,$sql1))
  {
  die('Error: ' . mysqli_error($con1));
  }
echo "1 record added";

mysqli_close($con1);

?>



<form action="" method="post">
Name <input type="text" name="user_comment_name">
Message <input type="text" name="user_comment_message">
<input type="submit">
</form>

奇怪的是,当我将第二个mysqli连接放入另一个名为insert.php的文件(例如)并放入其中时,它可以工作,但它会将我引导到一个我不想要的白页。所有帮助赞赏的家伙!干杯:)

2 个答案:

答案 0 :(得分:2)

通知错误源于您正在重定向/查看页面:

$user_comment_name = $_POST['user_comment_name'];

此行期望在通过POST提交值时加载您的页面。

为了验证此信息是否实际发布,您应该检查:

例如

if( isset($_POST))

此外(添加@ h2ooooooo的评论)请注意,您正在将用户提交的POST值中的数据直接插入数据库而不需要卫生设施。这就是说,任何人都可以使用您当前的设置破解您的数据库。还尝试转移到mysqli_ functions和PDO中提供的预处理语句,避免编写基于mysql_ *函数的新代码。它们被认为是不好的做法,将在不久的将来从PHP中删除。

答案 1 :(得分:0)

您可以使用@(错误控制运算符在php中)解决此错误,如下所示

$user_comment_name = @$_POST['user_comment_name'];
$user_comment_message = @$_POST['user_comment_message'];

但这不是正确控制错误的正确方法。 在值提取和插入之前的代码中,您必须设置if(isset)条件

示例

if(isset($_POST['submit']))
{
$user_comment_name = $_POST['user_comment_name'];
$user_comment_message = $_POST['user_comment_message'];
$sql1="INSERT INTO user_comment (user_comment_name, user_comment_message)
VALUES
('$user_comment_name','$user_comment_message')";

if (!mysqli_query($con1,$sql1))
  {
  die('Error: ' . mysqli_error($con1));
  }
echo "1 record added";

mysqli_close($con1);
}