试图让另一个用户'admin'更新所选用户PHP的字段

时间:2015-12-16 00:05:41

标签: php html mysql pdo

我正在学习如何在php中使用PDO OOP创建注册和登录系统的教程。我完成了教程,最终使一切正常。我的问题是如何让已经登录的人更新另一个用户。是否有一种不同的方式来了解错误而不是我所做的。请看下面的代码。 (这不是整个代码只是相关部分。如果您需要或想要更多,请告诉我,我将编辑帖子。)

此外,我输出的错误是“更新时出现问题”。来自用户类。

提前感谢所有帮助。

这是表格

public function update($fields = array(), $chosenfield = 'id', $id= null) {

    if(!$id && $this->isLoggedIn()) {
      $id = $this->data()->id;
    }

    if(!$this->_db->update('users', $chosenfield, $id, $fields)) {
      throw new Exception('There was a problem updating.');
    }
  }

以下是用户类

中的方法
  public function query($sql, $params = array()) {
    $this->_error = false;
    if($this->_query = $this->_pdo->prepare($sql)){
      $x = 1;
      if(count($params)){
        foreach($params as $param){
          $this->_query->bindValue($x, $param);
          $x++;
        }
      }
      if($this->_query->execute()){
        $this->_results = $this->_query->fetchAll(PDO::FETCH_OBJ);
        $this->_count = $this->_query->rowCount();
      } else {
        $this->_error = true;
      }
    }
    return $this;
  }

public function update($table, $chosenfield, $id, $fields){
    $set = '';
    $x = 1;

    foreach($fields as $name => $value){
      $set .="{$name} = ?";
      if($x < count($fields)){
        $set .= ', ';
      }
      $x++;
    }

    $sql = "UPDATE {$table} SET {$set} WHERE {$chosenfield} = {$id}";

    if(!$this->query($sql, $fields)->error()){
      return true;
    }
    return false;
  }

以下两个方法将显示从DB类发生的事情。

{{1}}

0 个答案:

没有答案