在PHP中将GROUPBY查询扩展为现有PDO get查询

在PHP中将GROUPBY查询扩展为现有PDO get查询,php,mysql,pdo,Php,Mysql,Pdo,这是我的问题,youtube上有一个关于使用PDO作为查询的教程,更像是面向对象的php查询。我正在尝试扩展get()函数的功能。此mainget()和操作是该函数的扩展,该函数只能在其中获取参数。代码如下: public function action($action, $table, $where = array()) { if (count($where) === 3) { // make sure 3 array $operators = array('=', '

这是我的问题,youtube上有一个关于使用PDO作为查询的教程,更像是面向对象的php查询。我正在尝试扩展
get()
函数的功能。此main
get()
操作
是该函数的扩展,该函数只能在其中获取参数
。代码如下:

public function action($action, $table, $where = array()) {
    if (count($where) === 3) { // make sure 3 array
        $operators = array('=', '>', '<', '>=', '<='); // available operators

        $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);
}

我正在执行的查询:

DB::getInstance()->get('table',array('date','=',$date\u sort),array('car\u id')

以下是我迄今为止所做的工作:

public function action($action, $table, $where = array(), $group = array()) {
    if (count($where) === 3) { // make sure 3 array
        $operators = array('=', '>', '<', '>=', '<='); // available operators

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

        $g_field    = $group[0];

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

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

//$user = DB::getInstance()->get('user', array('username', '=', 'sanbrons'));
public function get($table, $where, $group = null) {
    return $this->action('SELECT *', $table, $where, $group);
}
公共函数操作($action,$table,$where=array(),$group=array()){
如果(count($where)==3){//确保3个数组

$operators=array(“=”、“>”、“=”、“看下面两个语句,请告诉我,在哪一个语句上,您可以知道它到底在做什么

SELECT * FROM table WHERE date = ? GROUP BY car_id

get('table', array('date', '=', $date_sort), array('car_id'));
听着,你正试图为自己省下一两句话。你真的认为为了这样的节省而破坏整个伟大的SQL体验值得吗?


摆脱这个无用的“教程”。它是由一个对SQL、PDO、尤其是OOP一窍不通的人编写的。这个查询实际上没有面向对象的功能。如果你想要一个查询生成器,或者如果你想学习如何编写一个-,你需要先熟悉现有的一个。自己拿吧如果是一个流行的框架并学习如何使用它的查询生成器。

看起来很糟糕。我会立即停止学习该教程,但是我在面向对象中看到的php是未来的动态php。我的判断与OOP或php无关。这只是一段非常糟糕的代码。据我所知,它非常不可读,不是吗e参数绑定或费心清理查询值。这些是关系数据库应用程序编程的基本租户。这组函数与OOP完全无关。不要让它们愚弄你。这是一种从数据库获取信息的动态方式。而编写此教程的人来自Youtube上的phpacademy。我遵循了他们所教的一切都是值得的。不要告诉我pdo不是动态php的未来。我只是渴望尝试pdo而不是传统的MYSQLI。1:获取
表中的所有信息,其中
日期等于
Get()中编码的某个变量数组
分组依据
car\u id
2nd:调用函数
get()
传递第一个参数
,第二个参数
WHERE的数组
和第三个参数
GROUP BY的数组
。这个可怕的东西实际上与PDO无关。如果你从这个无知的“教程”中学到了什么有用的东西,您会知道第一个示例可以使用PDO运行,而不需要这些“函数”.好吧,如果你想用这本无知的教程来折磨自己,那就看你了。@SanbronsLycoris是的,我从一开始就告诉过你了。它是无用的。它与PDO无关:事实上,任何一个驱动程序都可以使用这些糟糕的函数集。它也与OOP无关:OOP是类的使用,而不是函数w争论纷乱。最糟糕的是:youtube上的这个家伙对SQL毫无头绪。而你目前的问题正是这一点的直接后果。事实上,SQL语言比他想象的要复杂得多。而且它不能只在一个函数调用中使用。除了GROUP BY之外,还有更多的运算符。发明SQL的人并不像你想象的那样愚蠢。它是发明它是有原因的如果有人喜欢称自己为“学院”这并不能让他们学识渊博。别那么天真。@SanbronsLycoris如果你想看看真正的OOP,只需浏览这里的例子:注意真正的OOP语法,注意所有能让你告诉你这个变量到底是干什么的重要关键词——分组依据、地点依据或顺序依据——都保留在适当的位置——因此,在阅读这是一段代码,你可以分辨出它背后是哪个SQL,而你的函数却不能
SELECT * FROM table WHERE date = ? GROUP BY car_id

get('table', array('date', '=', $date_sort), array('car_id'));