Php PDO连接和准备好的语句

Php PDO连接和准备好的语句,php,mysql,database,pdo,Php,Mysql,Database,Pdo,问题: 我已经读了很多关于PDO的文章和两本书,但我似乎没有找到我的问题的答案。问题是是否有一种方法可以将到PDO的数据库连接作为require_包含一次,并且仍然能够在没有try/catch块的情况下使用准备好的语句 我目前有一个名为settings.php的文件,其中包含以下代码 Code settings.php: 我将此文件放在文档根目录之外,并将其与require_一起包含到实际的数据库连接文件中 代码db.php: 问题: 既然我有db.php文件,那么是否可以将其包含在其他文件中以

问题:

我已经读了很多关于PDO的文章和两本书,但我似乎没有找到我的问题的答案。问题是是否有一种方法可以将到PDO的数据库连接作为require_包含一次,并且仍然能够在没有try/catch块的情况下使用准备好的语句

我目前有一个名为settings.php的文件,其中包含以下代码

Code settings.php:

我将此文件放在文档根目录之外,并将其与require_一起包含到实际的数据库连接文件中

代码db.php:

问题:


既然我有db.php文件,那么是否可以将其包含在其他文件中以用于准备语句?即使连接在一个try/catch块中,准备好的语句也可以在try/catch块中吗?感谢您对如何在上述代码中包含SELECT/INSERT/UPDATE/DELETE的任何意见。

您的问题似乎很不清楚,由高度不相关的部分组成。比如说,预处理语句和try-catch块之间没有联系,两者都与include无关。对于在代码中包含SELECT/INSERT/UPDATE/DELETE查询,没有特别的指导,您只需在任何地方运行它们

我只能做一些笔记,希望它能澄清你的一些困惑

首先,阅读。它仍然是不完整的,但它可能会帮助你解决问题

现在谈谈你的问题

是否有一种方法可以将到PDO的数据库连接作为require_包含一次,并且仍然能够在没有try/catch块的情况下使用准备好的语句

对。在大多数情况下,您根本不需要try-catch块。然而,每当您真正需要它时,您可以毫无问题地使用try-catch块

是否可以将其包含在准备好的报表的其他文件中

对。这就是include操作符的作用

即使连接在一个try/catch块中,准备好的语句也可以在try/catch块中吗

对。您可以根据需要在代码中包含任意多个这样的块。然而,在大多数情况下,你根本不需要它们

如何在上述代码中包含SELECT/INSERT/UPDATE/DELETE


在这里包含这些查询是没有意义的。把它们写在包含db.php的那一行后面,你的问题似乎很不清楚,由高度不相关的部分组成。比如说,预处理语句和try-catch块之间没有联系,两者都与include无关。对于在代码中包含SELECT/INSERT/UPDATE/DELETE查询,没有特别的指导,您只需在任何地方运行它们

我只能做一些笔记,希望它能澄清你的一些困惑

首先,阅读。它仍然是不完整的,但它可能会帮助你解决问题

现在谈谈你的问题

是否有一种方法可以将到PDO的数据库连接作为require_包含一次,并且仍然能够在没有try/catch块的情况下使用准备好的语句

对。在大多数情况下,您根本不需要try-catch块。然而,每当您真正需要它时,您可以毫无问题地使用try-catch块

是否可以将其包含在准备好的报表的其他文件中

对。这就是include操作符的作用

即使连接在一个try/catch块中,准备好的语句也可以在try/catch块中吗

对。您可以根据需要在代码中包含任意多个这样的块。然而,在大多数情况下,你根本不需要它们

如何在上述代码中包含SELECT/INSERT/UPDATE/DELETE


在这里包含这些查询是没有意义的。只需在包含db.php的那一行之后编写即可,因为那里有很多不必要的代码

1 try/catch是多余的,因为默认情况下PHP会将错误记录到错误日志中。此外,任何有用的东西都将来自execute调用

2是的,您当然可以将您的数据库凭据包括在任何您想要的地方,但请记住,一次需要_是昂贵的,所以一定要考虑到这一点。您可以考虑在所有其他页面中包括整个代码块,而不只是包含凭据,然后重写其他代码。

上述代码中的select语句示例如下:

$stmt = $dbh->prepare("SELECT * FROM `table` WHERE `id` = :id");
$stmt->execute(array(":id"=>$id));
$results = $stmt->fetch(PDO::FETCH_ASSOC);

这里有很多不必要的代码

1 try/catch是多余的,因为默认情况下PHP会将错误记录到错误日志中。此外,任何有用的东西都将来自execute调用

2是的,您当然可以将您的数据库凭据包括在任何您想要的地方,但请记住,一次需要_是昂贵的,所以一定要考虑到这一点。您可以考虑在所有其他页面中包括整个代码块,而不只是包含凭据,然后重写其他代码。

上述代码中的select语句示例如下:

$stmt = $dbh->prepare("SELECT * FROM `table` WHERE `id` = :id");
$stmt->execute(array(":id"=>$id));
$results = $stmt->fetch(PDO::FETCH_ASSOC);
究竟什么是unnec
随笔代码?你还可以详细说明你的意思是在所有其他页面中包括整个代码块,而不是仅仅包括凭据?@ KExxFalm——默认情况下PHP不需要重复的东西,比如将错误放在文件中并向用户显示错误。尝试/捕捉的目的是优雅地处理这些错误,你所做的并不优雅。-我的意思是,你可以把整个连接块粘贴到一个文件中,然后在你需要DB连接的地方包含这个文件。然后,你不必将那个巨大的块复制到每一页,只需要包含那一行。在你看来,一个优雅的错误处理会是什么样子?这是一个全新的问题。什么是不必要的代码?你还可以详细说明你的意思是在所有其他页面中包括整个代码块,而不是仅仅包括凭据?@ KExxFalm——默认情况下PHP不需要重复的东西,比如将错误放在文件中并向用户显示错误。尝试/捕捉的目的是优雅地处理这些错误,你所做的并不优雅。-我的意思是,你可以把整个连接块粘贴到一个文件中,然后在你需要DB连接的地方包含这个文件。然后,你不必把那个巨大的块复制到每个页面上,只需要包含那一行。在你看来,一个优雅的错误处理会是什么样子?这是一个全新的问题。
$stmt = $dbh->prepare("SELECT * FROM `table` WHERE `id` = :id");
$stmt->execute(array(":id"=>$id));
$results = $stmt->fetch(PDO::FETCH_ASSOC);