私はPDOが初めてです。私は理解しようとする。PDOからの別個の接続
PDOを使用して接続を分離する最も良い方法は何ですか?
たとえば、私はうまく動作するこのコードを持っています:
<?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "podcast";
try {
$conn = new PDO("mysql:host=$servername; dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully <br>";
$sql = "SELECT podcast, text
FROM bookmarks
WHERE data = :data";
$statement = $conn->prepare($sql);
$data = 1;
$statement->bindValue(':data', $data);
$statement->execute();
echo $statement->rowCount() . " records SELECTED successfully <br>";
$rows = $statement->fetchAll();
foreach($rows as $row){
echo $row['podcast'] . '<br>';
echo $row['text'] . '<br>';
}
}
catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
$conn = null;
別々のファイルに接続すると便利かもしれません。私はそれを試みたが、それはうまくいくが、それが最良の方法であるかどうかはわからない。接続だけでtry-catchを持つのはいいですか?
のindex.php:
include("includes/connetion.php")
$sql = "SELECT podcast, text
FROM bookmarks
WHERE data = :data";
$statement = $conn->prepare($sql);
$data = 1;
$statement->bindValue(':data', $data);
$statement->execute();
echo $statement->rowCount() . " records SELECTED successfully <br>";
$rows = $statement->fetchAll();
foreach($rows as $row){
echo $row['podcast'] . '<br>';
echo $row['text'] . '<br>';
}
$conn = null;
connection.php:
<?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "podcast";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// $conn = new PDO("sqlite:/Applications/MAMP/db/sqlite/podcast", $username, $password); //Lite
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully <br>";
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
?>
まあ...それほど悪くはありませんが、不正なクエリによって返されたエラーは検出されません。特定の接続エラーのみです。クエリにエラーがある場合は、個別のエラー機能を作成するか、各クエリにtry/catchブロックを追加する必要があります。 – junkfoodjunkie
データベースに接続できない場合は、何ですか?アプリケーションの残りの部分は何をするつもりですか?あなたは、ラインの下でより多くのエラーを生成するために、なぜ不必要に実行し続けるのですか? **なぜ例外をキャッチしていますか?** – deceze
@junkfoodjunkieエラーをキャッチしていないのは何ですか? –