我正在使用此功能编写代码:
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配置的问题吗?
答案 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页面上看到完整的值转储。