Commit: 2425be23c5a556097b2758ffbc5607a22d4d6349 Author: Rasmus Lerdorf <[email protected]> Tue, 17 Jul 2018 20:16:47 -0400 Parents: 23298a123688443276f60143c1261f85a85873fe Branches: master
Link: http://git.php.net/?p=web/bugs.git;a=commitdiff;h=2425be23c5a556097b2758ffbc5607a22d4d6349 Log: Missing the pdo file Changed paths: A include/classes/bug_pdo.php Diff: diff --git a/include/classes/bug_pdo.php b/include/classes/bug_pdo.php new file mode 100644 index 0000000..b787168 --- /dev/null +++ b/include/classes/bug_pdo.php @@ -0,0 +1,82 @@ +<?php +/** + * Thin compatibility layer between MDB2 and PDO for bugs.php.net. + * + * Please mind that it's not meant to implement full feature set, + * but only this used by our existing codebase. New code interacting + * with the database should be written using standard PDO's approach. + * + * @author Maciej Sobaczewski <[email protected]> + */ + +// Define missing constants +define('MDB2_FETCHMODE_ASSOC', null); +define('MDB2_FETCHMODE_ORDERED', null); +define('MDB2_PREPARE_MANIP', null); + +class Bug_PDO extends PDO +{ + /** + * When creating new PDO object, automagically switch PDOStatement with + * own extended implementation. + */ + public function __construct($dsn, $username = '', $password = '', array $options = []) + { + parent::__construct($dsn, $username, $password, $options); + + $this->setAttribute(PDO::ATTR_STATEMENT_CLASS, ['Bug_PDOStatement']); + } + + /** + * MDB2::espace() doesn't put apostrophes around the text and PDO does so we + * need to strip outermost characters. + */ + public function escape($text, $escape_wildcards = false) + { + return substr($this->quote($text), 1, -1); + } + + public function queryAll($query, $types = null, $fetchmode = null, $rekey = false, $force_array = false, $group = false) + { + return $this->query($query)->fetchAll(); + } +} + +class Bug_PDOStatement extends PDOStatement +{ + /** + * MDB2 allows for chaining execute() method like so: + * $db->query('SELECT a FROM b WHERE c = ?')->execute('foo')->fetch(); + * PDOStatement::execute(), on the other hand, returns boolean. Change it + * to return $this and thus allow futher method chaining. + */ + public function execute($input_parameters = NULL) + { + parent::execute($input_parameters); + + return $this; + } + + public function fetchAll($fetchode = null, $rekey = false, $force_array = false, $group = false) + { + return parent::fetchAll(); + } + + public function fetchCol($colnum) + { + return parent::fetchColumn($colnum); + } + + public function fetchOne($colnum = 0, $rownum = null) + { + return $this->fetch(PDO::FETCH_NUM)[0]; + } + + public function fetchRow($mode=NULL) + { + if (!$mode) { + $mode = PDO::FETCH_BOTH; + } + return $this->fetch($mode); + } +} -- PHP Webmaster List Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
