Php 我可以有一个持久的PDO对象,它只接受从AJAX调用绑定的新变量吗?

Php 我可以有一个持久的PDO对象,它只接受从AJAX调用绑定的新变量吗?,php,mysql,ajax,pdo,Php,Mysql,Ajax,Pdo,如果我想创建一个ajax搜索(用户填写表单元素,对表单元素进行任何更新后,搜索结果都会实时更新。) 是否可以创建一个只需要绑定/执行通过ajax发送的新变量的持久(准备好的)PDO连接 还有其他聪明的方法吗 编辑:我只是想说清楚,也许更具体一点:我要寻找的是一个跨连接的持久性准备语句。您可以使用以下方法建立持久性连接: 这样,如果您必须在新请求时重新连接,PDO将使用池中的连接,而不是创建新的连接。如果将prepared语句与prepare()和bindParam()一起使用,则查询将在数据库

如果我想创建一个ajax搜索(用户填写表单元素,对表单元素进行任何更新后,搜索结果都会实时更新。)

是否可以创建一个只需要绑定/执行通过ajax发送的新变量的持久(准备好的)PDO连接

还有其他聪明的方法吗


编辑:我只是想说清楚,也许更具体一点:我要寻找的是一个跨连接的持久性准备语句。

您可以使用以下方法建立持久性连接:

这样,如果您必须在新请求时重新连接,PDO将使用池中的连接,而不是创建新的连接。如果将prepared语句与
prepare()
bindParam()
一起使用,则查询将在数据库端编译,并比通常的查询运行得更快

有关缓存的一些链接:


您可以使用以下方法建立永久连接:

这样,如果您必须在新请求时重新连接,PDO将使用池中的连接,而不是创建新的连接。如果将prepared语句与
prepare()
bindParam()
一起使用,则查询将在数据库端编译,并比通常的查询运行得更快

有关缓存的一些链接:


我想你说的是准备就绪的状态,而不是“连接”

在调用之间无法保持相同的准备状态(ajax与否)


另一种方法是将变量存储在临时表中,并在流程结束时发送真正的请求…

我想您在这里谈论的是准备好的状态,而不是“连接”

在调用之间无法保持相同的准备状态(ajax与否)


另一种方法是将变量存储在临时表中,并在流程结束时发送实际请求…

我知道这些都是正确的。准备好的语句将在数据库端编译并运行得更快,而持久性连接将尝试使用与上次相同的连接。。。然而,我不确定这些将如何协同工作。我有一种感觉,仅仅这两个基本部分还不足以实现我想要的,即跨连接的持久准备语句。数据库引擎将编译并缓存连接之间传递的查询。但是你不是在尝试过多的优化吗?这是针对标签系统的,随着数据集开始变大(或者我的理解是这样),标签系统在关系数据库上会变得越来越紧张。使用AJAX风格的搜索,这会增加额外的负载,所以我试图尽可能减少计算量。这对我来说是错误的。优化连接时间不会给您带来任何好处。在PHP中缓存查询结果,这就是方法。关于“如果使用prepare()和bindParam()的预处理语句,查询将在数据库端进行编译,并比通常的查询运行得更快。”-请看,它声明“PDO_MySQL驱动程序默认值emulate_prepare为1,这将强制驱动程序模拟所有预处理的查询。”,因此,服务器端编译或缓存准备好的查询在默认情况下是不会发生的。准备好的语句将在数据库端编译并运行得更快,而持久性连接将尝试使用与上次相同的连接。。。然而,我不确定这些将如何协同工作。我有一种感觉,仅仅这两个基本部分还不足以实现我想要的,即跨连接的持久准备语句。数据库引擎将编译并缓存连接之间传递的查询。但是你不是在尝试过多的优化吗?这是针对标签系统的,随着数据集开始变大(或者我的理解是这样),标签系统在关系数据库上会变得越来越紧张。使用AJAX风格的搜索,这会增加额外的负载,所以我试图尽可能减少计算量。这对我来说是错误的。优化连接时间不会给您带来任何好处。在PHP中缓存查询结果,这就是方法。关于“如果使用prepare()和bindParam()的预处理语句,查询将在数据库端进行编译,并比通常的查询运行得更快。”-请看,它声明“PDO_MySQL驱动程序默认值emulate_prepare为1,这将强制驱动程序模拟所有预处理的查询。”,因此,服务器端编译或缓存准备好的查询在默认情况下是不会发生的。您确定存储过程不适合这种情况吗?您确定存储过程不适合这种情况吗?
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array(
    PDO::ATTR_PERSISTENT => true
));