Heim > Backend-Entwicklung > PHP-Tutorial > php PDO实例化一次

php PDO实例化一次

WBOY
Freigeben: 2016-06-20 12:38:55
Original
1245 Leute haben es durchsucht

各位大神,下面是我写的一个连接类有些疑问,望解答

class DbOperator{	private static $db = null;		public static function getInstance()	{		try 		{			if($db == null)			{				$db = new PDO("mysql:host=".localhost.";dbname=".test,root,root, array(PDO::ATTR_PERSISTENT => true));									$db->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER);								}			return $db;		}		catch (Exception $e)		{			die("数据库连接失败!".$e->getMessage());		}			}   		function __destruct ()	{		$db = null;	}		/**	 * 次函数主要是以集合的形式返回,或插入集合数据。	 * @param unknown $strSql	 * @param unknown $array	 */    public static function executeArraySql($strSql, $array)    {        try         {        	DbOperator::getInstance()->beginTransaction();        	            $stms = DbOperator::getInstance()->prepare($strSql);                        foreach ($array as $value)            {                $stms->execute($value);            }                        DbOperator::getInstance()->commit();                    }catch (PDOException $e)        {            print "Error: " . $e->getMessage() . "<br/>";            die();        }            }    /**     * 次函数主要是用来指定条件查询     * @param unknown $strSql     * @param unknown $array 查询参数     */    public static function executeSql($strSql,$array)    {        try        {            $stms = DbOperator::getInstance()->prepare($strSql);                        $bRet = $stms->execute($array);                                    return $bRet;                }catch (PDOException $e)        {            print "Error: " . $e->getMessage() . "<br/>";            die();        }    }}
Nach dem Login kopieren


当我第一次执行方法调用DbOperator::getInstance()  这个时候$db为null, 满足条件new PDO,
但是当我执行第二次调用DbOperator::getInstance() 的时候$db 应该在第一次的时候就实例化了,但是我debug发现$db还是为null, 又执行了一次new PDO,这是怎么回事


回复讨论(解决方案)

$db 都改成 self::$db

private static $db = null; 
这个不要改

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage