【问题标题】:How to allow users to edit a post using the sql UPDATE statement?如何允许用户使用 sql UPDATE 语句编辑帖子?
【发布时间】:2012-04-28 21:20:44
【问题描述】:

我试图让用户编辑他们发布的内容。内容分为标题和正文两部分。它也有一个类别,但我不想让他们编辑它。所以这里是假设更新标题的任何更改的代码:

$sql = "更新

主题

SET topic_subject = " .mysql_real_escape_string($_POST['topic_subject']) . "

在哪里

topic_id = " .mysql_real_escape_string($_GET['id']);

更新内容的代码具有相同的格式。 我从页面的 url 中获取 id,一旦他们在编辑页面上单击提交,表单就会调用包含此代码的页面。它给了我这个错误:

插入数据时出错。请稍后再试。

您的 SQL 语法有错误;检查与您的 MySQL 对应的手册 在第 4 行的“WHERE topic_id =”附近使用正确语法的服务器版本

我不是 SQL 专家,不知道问题可能出在哪里。提前致谢。

【问题讨论】:

    标签: mysql sql database


    【解决方案1】:

    您的字符串值周围缺少单引号:

    $subject = mysql_real_escape_string($_POST['topic_subject']);
    $topic_id = (is_numeric($_GET['id']) ? $_GET['id'] : 'NULL');
    $sql = "
        UPDATE topics
        SET topic_subject = '$subject'
        WHERE topic_id = $topic_id
    ";
    

    我的代码还假设 topic_id 是一个 int 列,所以我正在检查该值是否为数字而不是转义它。

    【讨论】:

    • 谢谢你,修复了错误。我尝试修改帖子,但它没有编辑帖子。
    • 你是在执行SQL查询吗?我发布的代码仅构建查询。如果是,请回显$sql 以查看您传递给 MySQL 的确切查询,并在此处发布结果。
    • 这就是我得到的:UPDATE posts SET post_content = 'Testing post.' WHERE post_id = NULL
    • @user1363393,这意味着$_GET['id'] 不包含数值。要么您没有传递 id,要么您使用的是字符串 id(在后一种情况下,将 $topic_id 括在单引号中,就像我对 $subject 所做的那样)。
    • 非常感谢您的帮助。我终于让它工作了。让用户编辑帖子的页面有 id,但处理更新的页面没有,所以我只添加了 ?id='.$_GET['id'] 。到表单动作并且它起作用了。惊人的。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2021-06-11
    • 2023-03-16
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    • 2015-05-28
    • 2016-01-02
    相关资源
    最近更新 更多