【问题标题】:PHP PDO how to update informationPHP PDO如何更新信息
【发布时间】:2019-04-15 00:35:34
【问题描述】:

我对 PHP 很陌生,我正在使用带有 PDO 的 PHP MVC。

我正在尝试更新给定用户 ID 的“个人资料”表的名字和姓氏。

这是我的模型

public function update(){
    $stmt = $this->_connection->prepare("UPDATE Profile SET first_name = ?, last_name = ?, WHERE user_id = :user_id");
    $stmt->bindParam(':user_id', $_SESSION['user_id']);
    $stmt->execute();
    return $stmt->rowCount();
}

这是我的控制器

        $prof = $this->model('Profile');
        $myProfile = $prof->getProfile($_SESSION['username']);

        if(isset($_POST['action'])){
                 $myProfile ->first_name = $_POST['First_name'];
                 $myProfile ->last_name = $_POST['Last_name'];
                 $myProfile ->update();

        }

它不起作用,我收到以下错误

PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: mixed named and positional parameters (points to excute in model)

【问题讨论】:

  • 错误信息很清楚,你同时使用了位置参数?和命名参数:user_id。不能混用,只能使用一种。
  • 另外,你有 3 个参数,但你只绑定了 1 个。
  • @catcon 我的更新查询应该是什么样的?我看的所有视频都没有 MVC。
  • @catcon 我不太确定我的更新查询应该是什么样子。如果我把 ?在 user_id 上,我收到一条错误消息,说没有绑定 [参数
  • 你有 3 个参数,但你只绑定了 1 个,这是你如何使用它:php.net/manual/en/pdostatement.bindparam.php

标签: php model-view-controller pdo


【解决方案1】:

您的 update() 函数应如下所示:

public function update() {

    $stmt = $this->_connection->prepare('UPDATE profile SET first_name = :first_name, last_name = :last_name WHERE user_id = :user_id');
    $stmt->bindParam(':user_id', $_SESSION['user_id']);
    $stmt->bindParam(':first_name', $_POST['First_name']);
    $stmt->bindParam(':last_name ', $_POST['Last_name']);
    $stmt->execute();

    return $stmt->rowCount();
}

还有:

  • 您的 SQL 查询中有拼写错误(例如,,WHERE 之前)
  • 避免在变量名中混用大写/小写
  • 在更新数据库之前仔细检查您的输入(非空,并且与预期格式匹配)

【讨论】:

    猜你喜欢
    • 2011-07-26
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 1970-01-01
    • 2017-05-09
    • 2011-07-10
    • 2015-11-15
    相关资源
    最近更新 更多