sql >> データベース >  >> RDS >> Mysql

PDO動的クエリ構築

    別の$paramsが必要です selectへのパラメータ 方法。メソッドパラメータのデフォルトを自由に提供しました。 @userXxxxのメモのように、SELECTを実行するためだけにトランザクションは必要ありません。 。

    <?php
    
    class db {
    
        public $connection; //PDO
        public $dbFields; // This is an array of the fields plus VALUES
    
        public function select($where = '1', $params = array(), $limit = '', $fetchStyle = PDO::FETCH_ASSOC) { //fetchArgs, etc
            $fields = implode(', ', $this->dbFields);
    
            //create query
            $query = "SELECT $fields FROM {$this->table} WHERE $where $limit";
    
            //prepare statement
            $stmt = $this->connection->query($query);
    
            $stmt->execute($params);
    
            return $stmt->fetchAll($fetchStyle);
        }
    
        //...
    }
    
    
    $where = 'userId IN(:userId1, :userId2)';
    $params = array(':userId1' => 111, ':userId2' => 2222);
    $db->select($where, $params);
    

    注:

    • 本当に必要な場合は、メソッドパラメータを追加して、 PDOStatement ::fetchAll
    • $dbFieldsの意味がわかりません 「フィールドと値」であること。説明してもらえますか?

    [編集]

    PDOStatement::executeのドキュメント/例をご覧ください。 、それはあなたの混乱が根付いているように思われたので-特に$input_parameters メソッドパラメータ。



    1. ラッパークラスの機能変換

    2. SQLServerのID列の増分値を返します

    3. MySQL 5.7 my.cnfファイルはどこにありますか?

    4. MySQL:ストアドプロシージャ内のトランザクション