我正在制作一个评论系统&我创建了一个管理员可以删除评论的页面。我已编码所有内容和它似乎是对的,但我不知道为什么它根本不起作用......
这是管理员页面的代码:
<html>
<head>
<title>Admins Page</title>
</head>
<body>
<?php
function getCM(){
global $con;
$get_comment = "select * from product_comments where type='0'";
$run_comment = mysqli_query($con, $get_comment);
while($row_comment = mysqli_fetch_array($run_comment)){
$cmid = $row_comment["id"];
$cmcode = $row_comment["productcode"];
$cmemail = $row_comment["email"];
$cmname= $row_comment["name"];
$cmcomment = $row_comment["comment"];
$cmdate = $row_comment["modified_date"];
$cmtime = $row_comment["modified_time"];
$cmtype = $row_comment["type"];
echo "
<div class='container'>
<div id='table' class='table-editable'>
<span class='table-add glyphicon glyphicon-plus'></span>
<table class='table'>
<tr>
<th>Comment ID #$cmid</th>
</tr>
<tr>
<td contenteditable='true'>$cmcomment</td>
<td>
<span class='table-remove glyphicon glyphicon-remove'></span>
</td>
<td>
<a href='delete.php?id=$cmid'>Delete</a>
</td>
</tr>
</div>
";
}
}
?>
</body>
</html>
这是delete.php页面的代码:
<?php
session_start();
if (!isset($_SESSION["manager"])) {
header("location: admin_login.php");
exit();
}
require '../php_includes/init/db_conx.php';
require '../functions/func.php';
if (isset($_GET['cmid'])){
$comment_id = $_GET['cmid'];
mysqli_query("DELETE FROM product_comments WHERE id='$comment_id'") or die(mysql_error());
echo "<script>alert('Comment has been deleted!')</script>";
header("Location: product_comments.php");
}
?>
如果您知道我的问题,请告诉我......
答案 0 :(得分:4)
这里有一些问题。
您没有连接到您的查询mysqli_query("DELETE...
该函数需要传递数据库连接参数。
然后mysql_error()
mysql_
函数不会与其自身API以外的任何内容混合使用mysqli_error($con)
,假设与mysqli_
和$con
成功连接作为其变量。
您目前的代码向SQL injection开放。使用mysqli_*
with prepared statements或PDO与prepared statements。
在PHP方面:
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:只应在暂存时进行显示错误,而不是生产。
如果您的代码中存在其他错误。
在你的代码的这一部分中有:
echo "<script>alert('Comment has been deleted!')</script>";
header("Location: product_comments.php");
您在标头之前输出,需要删除回显并为标题添加exit;
。
咨询:How to fix "Headers already sent" error in PHP
然后这个:
<a href='delete.php?id=$cmid'>Delete</a>
您正在使用?id
并引用$_GET['cmid']
数组。
关于&#34; id&#34;被称为&#34;教一个人如何捕鱼&#34; 。
<强>脚注:强>
getCM()
函数。答案 1 :(得分:0)
您遇到的错误是
$comment_id = $_GET['cmid'];
将其更改为此
$comment_id = $_GET['id'];
toexplain whz
<a href='delete.php?id=$cmid'>Delete</a>
你称cmid不是id。因此你需要得到id