2017-07-28 81 views
0

我想使用内置的PDO类连接到mysql数据库。
如果我理解正确,PDO方法默认不会引发异常。它是否正确?
所以我试图改变错误模式:在名称空间内调用PDO :: setAttribute

$pdo = new PDO($dsn, $user, $password); 

$ pdo->的setAttribute(PDO :: ATTR_ERRMODE,PDO :: ERRMODE_EXCEPTION);

我的问题是,我用我的班命名空间,所以我必须写:

$pdo = new \PDO($dsn, $user, $password); 

但我不知道如何设置错误模式在这方面。

+0

只需添加“使用PDO”在php文件的顶部。 secure.php.net/manual/en/language.namespaces.importing.php – DanielO

回答

2
$pdo = new \PDO($dsn, $user, $password); 
    $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); 

同样的方式,你最初声明它,我的朋友!

记住,PDO本身就是类,无论你是声明一个新的实例(new PDO),或者如果你引用静态常量(PDO::ATTR_ERRMODE)。由于您位于名称空间内,因此您必须以\开头。这适用于每次出现PDO,这是同一班。所以我们始终使用\PDO

这可能很难记住,你也可以把use \PDO;放在顶部,然后在整个过程中正常使用PDO。挑一个,并坚持到处。

+0

在属性中使用反斜杠 – Yolo

+0

如果我尝试在setAttribute中使用反斜杠,我得到一个致命错误:MyFile中找不到类'MyNamespace \ \ PDO' .PHP。 – altralaser

+0

有趣的是,我测试了一下自己,它工作。好奇!如果尝试在顶部使用“使用PDO”的方法会发生什么? – aaronofleonard

相关问题