ID: 34270 User updated by: nmariz at estadias dot com Reported By: nmariz at estadias dot com -Status: Feedback +Status: Open Bug Type: PDO related Operating System: Debian GNU/Linux 3.1 (Apache 2) PHP Version: 5.1.0RC1 New Comment:
Ok, <?php class Modules { public function __construct() { $this->dbconn = DatabaseFactory::getInstance(); } public function getModules() { $query = 'SELECT id name,text FROM modules'; $stmt = $this->dbconn->query($query); $result = $stmt->fetchAll(); $stmt = null; return $result; } (...) } ?> <?php abstract class DatabaseFactory { private static $instancePool; private function __construct() { // Instanciation not allowed } // Prevent users to clone the instance public function __clone() { trigger_error('Clone is not allowed.', E_USER_ERROR); } // The singleton method public static function &getInstance($instanceIndex = 'default', $options = null) { try { if (isset(self::$instancePool[$instanceIndex])) return self::$instancePool[$instanceIndex]; elseif (is_array($options)) self::factory($instanceIndex, $options); else throw new Exception('The instance with index <b>'.$instanceIndex.'</b> does not exists'); } catch (Exception $e) { exit('<pre><b>Caught DatabaseFactory exception: </b><br />'.$e->getMessage().' on line <b>'.$e->getLine().'</b></pre>'); } return self::$instancePool[$instanceIndex]; } // The factory method public static function factory($instanceIndex, $options) { try { $dsn = $options['driver'].':host='.$options['hostname'].';dbname='.$options['database']; if ($options['persistent'] == 1) self::$instancePool[$instanceIndex] = new PDO($dsn, $options['username'], $options['password'], array(PDO_ATTR_PERSISTENT => true)); else self::$instancePool[$instanceIndex] = new PDO($dsn, $options['username'], $options['password']); if ($options['pdo_error_mode'] == 'exception') self::$instancePool[$instanceIndex]->setAttribute(PDO_ATTR_ERRMODE, PDO_ERRMODE_EXCEPTION); elseif ($options['pdo_error_mode'] == 'warning') self::$instancePool[$instanceIndex]->setAttribute(PDO_ATTR_ERRMODE, PDO_ERRMODE_WARNING); else // silent self::$instancePool[$instanceIndex]->setAttribute(PDO_ATTR_ERRMODE, PDO_ERRMODE_SILENT); } catch (PDOException $e) { exit('<pre><b>Database connection failed: </b><br />'.$e->getMessage().' on line <b>'.$e->getLine().'</b></pre>'); } } // Returns the total of instances public static function getTotalInstances() { return count(self::$instancePool); } // Returns the index of the last instance created public static function getLastInstanceIndex() { return self::$instancePoll[(count(self::$instancePool) - 1)]; } } ?> Previous Comments: ------------------------------------------------------------------------ [2005-08-29 17:44:34] [EMAIL PROTECTED] No, I don't trust anyone, not even myself when dealing with bugs. Is it so hard to give the 2-3 lines before this that do the connection/etc? ------------------------------------------------------------------------ [2005-08-29 17:39:49] nmariz at estadias dot com Man, Is in the query part, this happens in several queries on my app. I am not a beginner in PHP, so trust me... Whatever, forget... this is a waste of time. ------------------------------------------------------------------------ [2005-08-29 17:07:13] [EMAIL PROTECTED] I think you don't understand that I am very very lazy. And that your problem _might_ be somewhere ELSE than in the query part. So either give the full code or go away. ------------------------------------------------------------------------ [2005-08-29 17:00:45] nmariz at estadias dot com What part in "Segmentation fault when executing an invalid SQL(_____ANY_____) statement" did you not understand? I think that you don't need more code to understand what i mean. ------------------------------------------------------------------------ [2005-08-29 13:24:51] [EMAIL PROTECTED] What part in "a short but complete example script" did you not understand? ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/34270 -- Edit this bug report at http://bugs.php.net/?id=34270&edit=1