我是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();
}
?>
答案 0 :(得分:0)
我试过了,效果很好,但我不确定这是不是最好的方法。
只要你的代码是如上所示的通常的意大利面条,它就可以包含。
只有连接才能使用try-catch吗?
完全相反,there shouldn't be a try catch也有连接:
&#34;仅当您有一个处理方案而不仅仅是报告它时才捕获例外。否则只需让它冒泡到站点范围的处理程序(请注意,您不必编写一个,PHP中有一个基本的内置处理程序,这非常好)。&#34;
答案 1 :(得分:-2)
如果您尝试捕获可能的异常,则必须在与数据库通信的任何地方执行此操作。所以你必须在try-catch中包装代码,这些代码会向数据库索取一些数据。
另一个步骤是分离从表示它们的数据库中获取数据的概念(将它们发送到输出时)。您可以查看一些MVC概念 - 如何操作。