|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2013-07-03 03:45 UTC] laruence@php.net
-Status: Open
+Status: Verified
[2013-07-03 03:45 UTC] laruence@php.net
[2013-09-20 09:54 UTC] radtke at hd-system dot de
[2014-01-01 12:30 UTC] felipe@php.net
-Package: PDO related
+Package: PDO MySQL
[2020-11-26 13:57 UTC] nikic@php.net
-Status: Verified
+Status: Feedback
[2020-11-26 13:57 UTC] nikic@php.net
[2020-12-06 04:22 UTC] php-bugs at lists dot php dot net
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Nov 01 23:00:01 2025 UTC |
Description: ------------ create a class which extends the pdo class f.e. "extPDO" use the persistant mode declare a class var f.e. "$sf" create more then 1 object of the extPDO class and take access to the class var "$sf" causes a segmentation fault no seg fault if: 1. you are NOT in persistant mode 2. you just create 1 instance of the class 2. you don't declare the class var; just set it in the constructor and take access to it Noticed by accessing two different databases in a loop. Test script: --------------- class extPDO extends PDO { public $sf; public function __construct($db_name, $host, $username, $passwd) { $dsn = 'mysql:dbname='.$db_name.';host='.$host; $this->sf = '42'; $options = array(PDO::ATTR_PERSISTENT => true); parent::__construct($dsn, $username, $passwd, $options); $this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $this->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } } function testExtPDO() { for($i = 1; $i <= 2; $i++){ try{ $pdo_obj = new extPDO('csp2_mycms', 'csp2-db.pille.hds', 'root', ''); $sql = 'SELECT user_id FROM user'; $pdo_st = $pdo_obj->query($sql); if($row = $pdo_st->fetch(PDO::FETCH_ASSOC)) echo $i.'.sf:'. $pdo_obj->sf."<br>"; } catch(Exception $e){ echo 'Exception: '.$e->getMessage().'<br>'; } } } testExtPDO(); Expected result: ---------------- no segmentation fault Actual result: -------------- segmentation fault