2013-04-07 5 views
0

PHP의 PDO를 사용하여 MySQL DB에 액세스하고 있습니다. 나는 일반적으로 내 연결을위한 싱글 톤 클래스를 만든다. 연결을 시작할 때 MySQL 세션 변수를 설정하고 싶습니다. MySession1 및 MySession2를 설정하지 못한 시도는 아래를 참조하십시오. 어떻게해야합니까? 감사합니다PDO()를 사용하여 MySQL 세션 변수 설정

EDIT. 그냥 @ 하나만 사용하면 작동한다는 것을 알았습니다. 나는 원래 두 개의 at-signs @@를 사용하여 http://dev.mysql.com/doc/refman/5.0/en/using-system-variables.html에있는 문서화가 필요하다고 생각했습니다. 설명서를 어떻게 잘못 해석합니까?

class db { 
    private static $instance = NULL; 
    private function __construct() {} //Make private 
    private function __clone(){} //Make private 
    public static function db() //Get instance of DB 
    { 
     if (!self::$instance) 
     { 
      self::$instance = new PDO("mysql:host=localhost;dbname=myDB", 'myUsername', 'myPassword'); 
      self::$instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
      self::$instance->exec('SET @MySession1=123'); 
     } 
     return self::$instance; 
    } 
} 

db::db()->exec('SET @MySession2=321'); 

$stmt=db::db()->query('SELECT @MySession1 AS MySession1, @MySession2 AS MySession2'); 
$rs=$stmt->fetch(PDO::FETCH_ASSOC); 
echo("MySession1={$rs['MySession1']} MySession2={$rs['MySession2']}"); 
+0

콘솔에서만 PDO 없이도 작동합니까? –

+0

@YourCommonSense 테스트를 거치지는 않았지만 PDO로 작업하게되었습니다. 내가 편집 한 게시물에 언급했듯이, 왜 작동합니까? – user1032531

+0

mysql manual tells :> 시스템 변수의 @@ var_name 구문은 다른 데이터베이스 시스템과의 호환성을 위해 지원됩니다. – hakre

답변

관련 문제