在php中面向对象编程中使用数组的困难

时间:2014-11-24 17:26:58

标签: php mysql arrays oop

我想根据多个条件从MySQL数据库中提取数据,但我的动作功能允许我仅根据1个条件提取数据。

请帮我修改动作功能,以便我可以使用多个数组来提取数据。

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 action($action, $table, $where = array()) {
    if (count($where === 3)) {
        $operators = array('=', '>', '<', '>=', '<=');

        $field = $where[0];
        $operator = $where[1];
        $value = $where[2];

        if (in_array($operator, $operators)) {
            $sql = "{$action} FROM {$table} WHERE {$field} {$operator} ?";

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

public function get($table, $where) {
    return $this->action('SELECT *', $table, $where);
}

1 个答案:

答案 0 :(得分:1)

在object-orienter ORM层中,对于语句,或者更具体地说,对于SELECT语句,它是常见的,例如。

$users = $db->select('*')
   ->from('users')
   ->where('id', '>', 100)
   ->where('name', 'like', 'agg%')
   ->orderBy('name')
   ->execute()
   ->getResults();

设计允许这样的类的课程将是一次很好的学习练习。