0
我使用PHP的PDO來訪問我的MySQL數據庫。我通常爲我的連接創建一個單例類。我想在啓動連接時設置一個MySQL會話變量,之後再設置。請參閱下文,瞭解我設置MySession1和MySession2失敗的嘗試。我怎樣才能做到這一點?謝謝使用PDO設置MySQL會話變量()
編輯。只是發現它的作品,如果你只使用一個@
。我最初使用兩個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']}");
沒有PDO,只是在控制檯中工作嗎? – 2013-04-07 17:50:50
@YourCommonSense從來沒有測試過,但我得到它與PDO的工作。正如我在我編輯的文章中指出的那樣,它爲什麼會起作用? – user1032531 2013-04-07 17:52:45
mysql手冊說明:>爲了兼容其他數據庫系統,支持系統變量的@@ var_name語法。 – hakre 2013-04-07 18:04:43