【发布时间】:2017-12-11 20:10:30
【问题描述】:
我想要一个按钮来删除它旁边的表格条目。但我来不及了。我似乎在这里输入错误是我的尝试:
<td><a href="delete-quote.php?id=<?php echo $row['id'];?>"><button class="btn-danger-dark">Delete</button></a></td>
但它似乎不起作用。我只收到 ELSE 错误消息
我尝试了一些小的更改,但没有任何影响。我很确定这是我缺少的一些小东西。
我的 delete-quote.php 代码:
<?php
$id = $_GET['id'];
//Connect DB
// on success delete : redirect the page to original page
$dbname = "siyakhat_ibroker";
$conn = mysqli_connect("localhost", "siyakhat_root", "*****", $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
// sql to delete a record
$sql = "DELETE FROM prerequest WHERE id = $id";
if (mysqli_query($conn, $sql)) {
mysqli_close($conn);
header('Location: manage-quotes.php');
exit;
} else {
echo "Error deleting record";
}
?>
更新
我的 dbconnect.php
<?php
$mysql_hostname ="localhost";
$mysql_user ="siyakhat_root";
$mysql_password ="****";
$mysql_database ="siyakhat_ibroker";
$prefix = "";
$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password) or die("Could not connect database");
mysql_select_db($mysql_database, $bd) or die("Could not select database");
?>
【问题讨论】:
-
注意:
mysqli的面向对象接口明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的mysql_query接口混淆。在您对程序风格投入过多之前,值得转换一下。示例:$db = new mysqli(…)和$db->prepare("…")程序接口是 PHP 4 时代引入的mysqliAPI 的产物,不应在新代码中使用。 -
警告:使用
mysqli时,您应该使用parameterized queries 和bind_param将用户数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了一个严重的SQL injection bug。 切勿将$_POST、$_GET或任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。 -
您还需要避免使用 GET 进行删除请求。一些浏览器插件可以预取这样的链接,从而导致意外结果,例如删除整个数据库。
-
为什么你的
<a>里面有一个<button>? -
尝试将 ?id=* 作为获取参数传入 url 查询字符串。