2017-07-28 9 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

「use 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); 

最初に宣言したのと同じように、私の友人!

新しいインスタンス(new PDO)を宣言している場合でも、静的定数(PDO::ATTR_ERRMODE)を参照している場合でも、PDO自体がクラスであることを覚えておいてください。あなたは名前空間の中にいるので、それには\を前に付けなければなりません。これはすべてPDOのすべての発生に適用されます。すべて同じクラスです。だから我々は全体を通して\PDOを使う。

覚えておくと厄介なことがあります。use \PDO;を一番上に置き、通常はPDOを使用してください。 1つを選んで、どこにでも付ける。

+0

属性にバックスラッシュを使用する。 – Yolo

+0

setAttributeでバックスラッシュを使用しようとすると、致命的なエラーが発生します。クラス 'MyNamespace \\ PDO'がMyFileに見つかりません.php。 – altralaser

+0

興味をそそられて、私はそれを自分自身でテストし、それはうまくいった。興味深い!最上部に 'use PDO'を使うアプローチをしようとするとどうなりますか? – aaronofleonard

関連する問題