【问题标题】:Delete post by id fails everytime按 id 删除帖子每次都失败
【发布时间】:2014-06-11 06:40:47
【问题描述】:

我有一个供人们上传内容的新闻源,并且在那里我有一个 删除 按钮。我阅读了一些可以用来从数据库中删除一行的技巧。

我通过使用输入类型隐藏字段等来使用这个。

HTML

<form action="logic/delete_post.php" method="GET">
<input type="hidden" name="id" value="?id='.$pica['img_id'].'" />
<input type="submit" name="deleteSubmit" value="Delete" class="delete_post" />
</form>

DELETE_POST.PHP

<?php


if(isset($_GET['deleteSubmit'])) {

    $img_id = substr($_GET['id'],4,6);

    if(isset($_GET['id'])) {

        $result = $mysqli->query("SELECT picas.img_id FROM picas WHERE username='$ses_user'");
        $mysqli->query("DELETE FROM picas WHERE img_id='$img_id'");

        if (mysqli_affected_rows() == 1) {
        echo 'Succes!';
        } else {
            echo 'Damn!';
        }
    }

}


?>

感谢每条有帮助的评论!

【问题讨论】:

  • 我在 value 属性中看不到 php 括号,或者我猜你在使用连接时正在回显整个 html 垃圾......
  • 在使用$img_id 删除图像之前,您永远不会设置它。
  • 另外,您的代码效率不高,您的用户可以注入任何数据,因为您根本没有验证 ID
  • 您收到错误消息? $img_id 设置了吗?
  • 另外,您正在使用 OOP 样式来执行查询,并且正在使用过程函数来检查受影响的行。您应该使用 `$mysqli->affected_rows` 进行检查

标签: php sql button while-loop sql-delete


【解决方案1】:

去掉问号:

<input type="hidden" name="id" value="?id='.$pica['img_id'].'" />
                                      ^

让这个看起来像这样:

<input type="hidden" name="id" value="'.$pica['img_id'].'" />

然后

$img_id = $_GET['id'];

如果在 PHP.ini 中没有为请求值启用 addlashes(),则应使用 addlashes()。

【讨论】:

    猜你喜欢
    • 2015-02-23
    • 1970-01-01
    • 1970-01-01
    • 2019-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多