或者正如标题所述,我可能会采取错误的方式。我在phpmyadmin中的表中创建了一些字段。我有一个“post_id”作为唯一标识符。然后标题为“first_name”,“last_initial”,“email”,“feedback”和“approved”的字段或(行)。
这是网站上的推荐页面。我已经把事情搞定了,然后意识到我需要为网站所有者创建一种在显示评论之前批准评论的方法。
我是php和mysql的新手,所以对于你们这里的很多人来说这可能非常简单。当我在表单上方的推荐页面上连接到数据库以输入推荐时,我将调用所有值为“1”的行,因为这是“已批准”的注释。默认情况下,当有人在表单中输入信息以提交推荐时,该字段的值为“0”。现在在后端,我将连接到数据库并在字段中显示值为“0”的所有行。
我正在使用html表来显示字段,表格的最后一列有一个复选框。理想情况下,网站所有者会点击他们要批准的评论旁边的复选框,然后点击提交按钮,只有选中的复选框才会被批准。
我遇到的问题是当点击提交并连接执行此操作的php代码时,我正在使用UPDATE函数将“approved”字段中的值从0更改为1.
我遇到的问题是它正在批准每个评论,因为我没有以某种方式使用WHERE(函数,语句或其他任何调用它)对它进行限定。因为这个页面是动态的并且将显示不同的注释对于批准,我确实没有唯一的标识符。
我希望我对这个问题的无知并没有让你感到困惑,你将能够帮助我。
我在这里连接到数据库......
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"SELECT * FROM feedback WHERE approved = 0");
echo '<h1>Submitted Comments</h1>';
echo '<form action="approve_comment.php" method="post">';
echo '<table>';
echo '<tr>';
echo '<th>First Name</th>';
echo '<th>Last</th>';
echo '<th>Email</th>';
echo '<th>Comment</th>';
echo '<th>Check</th>';
echo '</tr>';
while($row = mysqli_fetch_array($result))
{
echo '<tr style="border:1px solid #000000; padding:10px;">';
echo '<td style="border:1px solid #000000; padding:10px; width:100px;">' . $row["first_name"].'</td>';
echo '<td style="border:1px solid #000000; padding:10px; width:50px;">' . $row["last_initial"] . '</td>';
echo '<td style="width:200px; padding:10px;">' . $row["email"] . '</td>';
echo '<td style="padding:10px; width:400px;">' . $row["feedback"] . '</td>';
echo '<td>' . '<input type="hidden" name="check" value="0"/>'.'<input type="checkbox" name="check" value="1"/>' . '</td>';
echo '</tr>';
}
echo '</table>';
echo '<input style="float:right;" type="submit" value="Approve Selected" />';
echo '</form>';
mysqli_close($con);
?>
该代码显示后端元素,他们将在那里批准评论。行动如下: 在这里连接到数据库...
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_query($con,"UPDATE feedback SET approved=1 WHERE approved='0'");
mysqli_close($con);
header("Location: http://redirecting to the back end page here");
?>
除了我的WHERE部分外,一切正常。我不确定要放在这里或者我是否正确地从数据库中调用信息以使其工作。
您的任何输入将不胜感激!谢谢!
答案 0 :(得分:1)
使用您的数据库记录ID:
首先在您的表单中:
echo "<input type=\"hidden\" name=\"post_id\" value=\"$row[post_id]\"/>";
然后在处理程序中:
$post_id = mysqli_real_escape_string($con, $_POST["post_id"]);
mysqli_query($con,"UPDATE feedback SET approved=1 WHERE post_id='$post_id'");
编辑添加强制性SQL注入保护!