本文介绍了了解PHP PG准备的状态器中的查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您如何阅读以下有关 pg_query_params pg_prepare 的代码?

How do you read the following code about pg_query_params and pg_prepare?

$result = pg_query_params ( $dbconn,
    "SELECT flagged_for_moderator_removal           // unsure about Repetition here
    FROM questions
    WHERE question_id = $1",
    array ( $_GET['question_id'] ) );

if ( pg_num_rows ( $result ) == 0 ) {
    $result = pg_prepare ( $dbconn, "get_flagged_status_list",
        "SELECT flagged_for_moderator_removal       // unsure about Repetition here
        FROM questions
        WHERE question_id = $1"
    );
}

此问题与在这里我不想声明两次准备好的语句。

This question is related to my thread where I do not want to declare twice the prepared statement.

语句之间的区别是,另一个具有 get_flagged_status_list 名称,而另一个则没有。我了解以下代码

The difference between statements is that the other has a name get_flagged_status_list, while the other one does not. I understand the code as follows

Iteration |  1                     2
----------------------------------------------------------------------
           run pg_query_params    run pg_qeury_params
           run pg_prepare
           run pg_execute         run pg_execute

但是,这不是正确的,因为代码运行 pg_prepare 1。

However, this is not true, since the code runs pg_prepare in the second iteration too. 1.

推荐答案

您发布的示例没有意义- pg_prepare() pg_query_params()是具有不同目的的独立函数,通常不会结合使用。

Your posted example does not make sense - pg_prepare() and pg_query_params() are independent functions with different purposes that you would not normally use in conjunction.

pg_prepare()准备一条语句(查询),供以后通过 pg_execute()执行。这样做是一种潜在的优化-如果您事先知道您将需要连续执行多次语句,那么预先准备它可以节省数据库服务器上的一些工作,因为它不必(重新)准备

pg_prepare() prepares a statement (a query) for later execution via pg_execute(). This is done as an potential optimization - if you know in advance that you will need to execute the statement many times in a row, preparing it upfront can save some work on the database server, since it does not have to (re-)prepare the statement for each call.

pg_query_params()(以及其简单版本 pg_query())只是直接执行语句(查询),强制数据库服务器在每次调用该函数时(重新)准备该语句。

pg_query_params() (as well as its 'simpler' version pg_query()) just executes the statement (query) directly, forcing the database server to (re)prepare the statement each time the function gets called.

简而言之,这

$result = pg_query_params($query, $params);

将为您提供与此完全相同的结果

will give you the exact same result as this

$statement = pg_prepare($query);
$result = pg_execute($statement, $params);

唯一的区别是,在第二种情况下,您仍然具有准备好的语句,可以重复使用 pg_execute()的更多调用-这就是为什么要给它起个名字的原因,因为这样您可以在同一连接上拥有不同的准备好的语句,并可以根据需要执行,以任意顺序多次。

The only difference is that in the second case, you still have the prepared statement, ready to reuse for more calls to pg_execute() - which is why you can give it a name, since that way you can have different prepared statements on the same connection that you can execute as you please, many times, in arbitrary order.

这篇关于了解PHP PG准备的状态器中的查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-15 07:53