我无法获取要删除的行,因为ID未通过网址。这是一个简单的错误,我看了一个小时后找不到解决方案。
此页面包含表格信息:
<?php
$result = mysql_query("SELECT review, ratings, date, user FROM reviews")
or die(mysql_error()); ;
if (mysql_num_rows($result) == 0) {
echo 'There Arent Any Reviews Yet';
} else {
echo "<table border='0'><table width=100% border='6'><tr><th>Comments/Thoughts</th><th>Ratings</th><th>Date</th><th>User</th><th>Delete</th></tr>";
while($info = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $info['review']. "</td>";
echo "<td>" . $info['ratings']. " Stars</td>";
echo "<td>" . $info['date']. "</td>";
echo "<td>" . $info['user']. "</td>";
echo "<td>" . " <a href='deletereview.php?review_id=" . $info['review_id'] . "'>Delete</a> </td>";
echo "</tr>";
}
}
echo "</table>";
?>
它转到deletereview.php,它执行删除功能:
<?php
session_start();
require_once '../includes/db.php';
$id = $_GET['review_id'];
$info = "DELETE FROM reviews WHERE review_id = '$id'";
mysql_query($info) or die ("Error: ".mysql_error());
echo "<h2>Review Deleted</h2>";
?>
任何想法的人?
答案 0 :(得分:7)
您没有在查询中选择review_id,因此$ info [“review_id”]始终为空。
答案 1 :(得分:3)
除了其他答案之外,我会说:
如果您没有清理变量,那么您的数据库将会被抬高。
例如,如果我通过review_id=' OR '1'='1
会怎样?
DELETE FROM reviews WHERE review_id = '' OR '1'='1'
此查询将删除reviews
中的所有内容。
mysql_real_escape_string()
您的$_GET
和$_POST
变量,然后在MySQL中使用它们。
答案 2 :(得分:2)
您忘了选择 review_id 。
$result = mysql_query("SELECT review_id, review, ratings, date, user FROM reviews")
答案 3 :(得分:0)
您没有从数据库中选择review_id
,而是使用$info['review_id']
在网址上设置ID。只需将第一行更改为:
$result = mysql_query("SELECT review_id, review, ratings, date, user FROM reviews")
此外,您必须使用mysql_real_escape_string
转义输入
$id = mysql_real_escape_string($_GET['review_id']);
答案 4 :(得分:0)
您必须在查询中选择review_id。但是你也必须检查一些SQL注入,因为使用GET请求可以很容易地删除所有表记录。