使用for php语句插入postgres db

时间:2016-12-11 02:13:02

标签: php postgresql for-loop

我正在使用此功能编写代码:

function foo() {

    $input = array('bar');

    for ($i=0;$i<1000;$i++) {

        $db=connection_pgsql() or die('Connessione al DBMS non riuscita');

            pg_prepare( "run","INSERT INTO tab1(name) VALUES  ($1)");
            pg_execute("run",$input);

            pg_prepare( "run","INSERT INTO tab2(name) VALUES  ($1)");
            pg_execute("run",$input);

            pg_prepare( "run","INSERT INTO tab3(name) VALUES  ($1)");
            pg_execute("run",$input);

        pg_close($db);


    }
}   

执行此功能后只有

tab1中的

20 行,tab2中的 20 行以及tab3中的 20

而不是

tab1中的

1000 行,tab2中的 1000 行以及tab3中的 1000 行。

这是php或postgresql配置的问题吗?

2 个答案:

答案 0 :(得分:0)

您没有检查错误。

检查函数的返回值并使用PHP提供的错误信息函数。

请参阅:

您还可以检查PostgreSQL错误日志。

如果你使用PDO,它会更清楚;见例如How is a Postgres "RAISE EXCEPTION" converted into a PDOException?

此外,不要像这样打开和关闭每个循环迭代的连接,性能将糟糕。最好在单个连接上完成单个事务中的所有工作。

答案 1 :(得分:0)

检查返回的资源,或者至少检查它是否为false。看看docs示例,您不应该只是pg_execute("run",$input);,而是

$result = pg_execute("run",$input);

所以你可以运行

var_dump($result);

通过这种方式,您将在html页面上看到完整的值转储。