PHP / MySQL-如何为已自动生成的表中的行自动生成删除链接?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP / MySQL-如何为已自动生成的表中的行自动生成删除链接?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3162字,纯文字阅读大概需要5分钟。
内容图文
![PHP / MySQL-如何为已自动生成的表中的行自动生成删除链接?](/upload/InfoBanner/zyjiaocheng/882/0f5fd6cca25f4676a22f461d00c7e9ce.jpg)
我有一个PHP脚本,它读取数据库表并将所有行插入到HTML表中,直到显示所有可用行,如下所示:
require_once('dbconnect.php');
$sql =
"SELECT
ID, Site, Type, Requested, Quote,
PO, CADs, MCS, DFP,
SIM, Prereqs, Design, Report, Delivered
FROM Predictions";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo '<table class="table table-hover table-condensed">';
while($row = $result->fetch_assoc()) {
echo
'<tbody>'.
'<tr>'.
'<td>'.$row['ID'].'</td>'.
'<td>'.$row['Site'].'</td>'.
'<td>'.$row['Type'].'</td>'.
'<td>'.$row['Requested'].'</td>'.
'<td>'.$row['Quote'].'</td>'.
'<td>'.$row['PO'].'</td>'.
'<td>'.$row['CADs'].'</td>'.
'<td>'.$row['MCS'].'</td>'.
'<td>'.$row['DFP'].'</td>'.
'<td>'.$row['SIM'].'</td>'.
'<td>'.$row['Prereqs'].'</td>'.
'<td>'.$row['Design'].'</td>'.
'<td>'.$row['Report'].'</td>'.
'<td>'.$row['Delivered'].'</td>'.
'<td>'.
'<a href="#">'.
'<span class="edit"><i class="fa fa-pencil"></i></span>'.
'</a> | <a href="#">'.
'<span class="delete"><i class="fa fa-times"></i></span>'.
'</a>'.
'</td>'.
'</tr>'.
'</tbody>';
}
echo "</table>";
}
else
echo "0 results";
$conn->close();
一切正常,但是现在我想要一个实质上是删除按钮(您可以在上方看到创建图标/链接的标记),该按钮将自动填充以与mysql数据库表的相应ID相对应. Image of table for visual idea of what I’m going for.
到目前为止,我的删除脚本在下面,但是我不知道该在“ WHERE id =“中添加什么,或者在正确设置后如何将其合并到我的第一个脚本中.
<?php
require_once('dbconnect.php');
$sql = "DELETE FROM Predictions WHERE id=";
if($conn->query($sql) === TRUE)
echo "Item deleted successfully";
else
echo "Error deleting record; ". $conn->error;
$conn->close();
因此,基本上我需要建议修改这两个脚本,以便在第一个脚本中生成一个删除链接(或表单,我不在乎),然后应用第二个脚本,并且知道要使用的对应ID.在寻求解决此问题的过程中,我看到了一些使用_GET的潜在解决方案,但是在同一线程中,其他人则说这实际上是一个非常糟糕且不安全的解决方案..所以我很困惑!
我正在学习PHP,但是我只用了大约2天时间,所以请留意:)
解决方法:
改变这个
<a href='#'><span class='delete'>
至
<a href='deletepage.php?id=" . $row["ID"] . "'><span class='delete'>
然后在“ deletepage.php”上,无论您要调用该页面执行什么操作,
require_once('dbconnect.php');
$id = (int)$_GET['id'];
$sql = "DELETE FROM Predictions WHERE id=" . $id;
if($conn->query($sql) === TRUE) {
echo "Item deleted successfully";
} else {
echo "Error deleting record; ". $conn->error;
}
$conn->close();
我不知道您在这里使用什么驱动程序,但是首选的解决方案是使用带有参数化查询的预备语句.
因此,您几乎可以通过GET参数将ID发送到“删除页面”.该页面采用该值,将其强制转换为int以避免SQL注入(在下文中进一步介绍),然后删除数据.您也可以使用标题将它们重定向到上一页,而不必回显成功.您可以将GET参数附加到该URL,以显示成功消息. (或者您可以始终在同一页面上执行所有操作,而只是检查ID是否正在发送).
另外,您应该在有人安全登录系统后面拥有此页面.您不希望任何用户/机器人能够执行该deletepage.php.
How can I prevent SQL injection in PHP? http://php.net/manual/en/security.database.sql-injection.php https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet#Defense_Option_1:_Prepared_Statements_.28Parameterized_Queries.29
我猜您正在使用mysqli,因此请查看该文档中有关该驱动程序http://php.net/manual/en/mysqli.quickstart.prepared-statements.php的准备好的语句.
内容总结
以上是互联网集市为您收集整理的PHP / MySQL-如何为已自动生成的表中的行自动生成删除链接?全部内容,希望文章能够帮你解决PHP / MySQL-如何为已自动生成的表中的行自动生成删除链接?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。