PHP ID不通过url

时间:2011-11-28 00:28:02

标签: php mysql

我无法获取要删除的行,因为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>";

?>

任何想法的人?

5 个答案:

答案 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请求可以很容易地删除所有表记录。