【问题标题】:Updating an entry from a table ONLY if the username is same as the user that created the entry PDO仅当用户名与创建条目 PDO 的用户相同时才从表中更新条目
【发布时间】:2015-06-28 13:04:31
【问题描述】:

也给出一些上下文。我正在创建一个用户可以留下评论的页面。我希望能够更改表格,以便如果用户想要更改/更新他们创建的评论,他们可以使用相同的表单 - 前提是用户名与评论留下的用户名相同。然后,我希望覆盖评论中的所有旧数据。

这是我用来插入详细信息的查询:

$sql = "UPDATE reviews SET book_id = :book_id, user = :user, 
review = :review, rating = :rating WHERE user = '.$username'";     
    $query = $dbh->prepare($sql);


    $query->execute(array(

    ':book_id' => $book,
    ':user' => $username,
    ':review' => $review,
     ':rating' => $rating   
         ));
    echo "You updated your review!  ";

    }else{
    echo "error occured: ".$error;
    exit();
}

输出:我设法用我输入的输入更新了每个条目,所以现在所有条目都是相同的。这不是我想要的,我想更新特定书籍上的条目 - 如果用户名匹配(与创建评论的人相同)再次。谁能告诉我如何获得欲望输出?提前致谢。

编辑:我添加了一个 where 子句,但它在数据库中没有输入任何内容,也没有错误。

【问题讨论】:

  • 然后使用您的主键更新该特定行
  • 为什么不简单地使用 WHERE 子句在 book_id 和 username 上添加约束?我还建议您阅读一些 SQL 基础知识或学习教程(谷歌搜索出现了 this one,乍一看看起来相当不错)。

标签: php mysql forms pdo


【解决方案1】:

我建议查找简单的 SQL 教程以了解更多信息,但您需要的是同时检查用户和 book_id 字段的条件。您可以通过像这样指定两个条件来做到这一点:

... WHERE [condition1] AND [condition2] ...

例如:

SELECT column1, column2 FROM table WHERE column3 = :value1 AND column4 = :value;

我强烈建议您查看基本概念,但以后可能会为您节省很多时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 1970-01-01
    相关资源
    最近更新 更多