微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 使用提交按钮更新mysql中的字段

或者正如标题所述,我可能会采取错误的方式.我在PHPmyadmin中的表中创建了一些字段.我有一个“post_id”作为唯一标识符.然后标题为“first_name”,“last_initial”,“email”,“Feedback”和“approved”的字段或(行).

这是网站上的推荐页面.我已经把事情搞定了,然后意识到我需要为网站所有者创建一种方法,在显示评论之前批准评论.

我是PHPmysql的新手,所以对于很多你来说这可能非常简单.当我在表单上方的推荐页面上连接到数据库以输入推荐时,我将调用所有值为“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部分.我不确定要放在这里或者我是否正确地从数据库调用信息以使其工作.

您的任何输入将不胜感激!谢谢!

解决方法:

使用您的数据库记录的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注入保护!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐