Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(PHP/Postgresql)调用返回void的函数?_Php_Html_Postgresql_Web - Fatal编程技术网

(PHP/Postgresql)调用返回void的函数?

(PHP/Postgresql)调用返回void的函数?,php,html,postgresql,web,Php,Html,Postgresql,Web,在PHP代码中,我试图调用一个返回void的函数,使用pg_prepare/pg_uexecute,这让我抓狂 $result = pg_prepare($dbconn, "",'SELECT * FROM dungeonasdb.crea_personaggio( "$nome", "$descrizione", "$email", "$password")'); $result = pg_execute($dbconn, "", NULL ) or die('Query creazione

在PHP代码中,我试图调用一个返回void的函数,使用pg_prepare/pg_uexecute,这让我抓狂

$result = pg_prepare($dbconn, "",'SELECT * FROM dungeonasdb.crea_personaggio( "$nome", "$descrizione", "$email", "$password")');
$result = pg_execute($dbconn, "", NULL ) or die('Query creazione fallita');
pg_prepare/pg_execute的设置是否有误?
谢谢

您可能想做一些不同的事情:

:不放置特定值,而是放置占位符。稍后将它们绑定到值。我更喜欢给陈述起个名字


如果
dungeonasdb.crea_personaggio
是返回
void
的函数,您可以通过以下方式调用它:

SELECT dungeonasdb.crea_personaggio(...)

您不能通过
SELECT*FROM dungeonasdb.crea_personaggio(…)
调用函数,因为这意味着
dungeonasdb.crea_personaggio
是a,而不是

所以你可能希望你的陈述是:

$result = pg_prepare($dbconn, "crea_personnagio", 
   'SELECT dungeonasdb.crea_personaggio($1, $2, $3, $4)'); 
$result = pg_execute($dbconn, "crea_personnagio", 
    ARRAY($nome, $descrizione, $email, $password)) 
    or die('Query execuzione fallita');

第二个语句是将参数绑定到PlacedHolder(
$1
,…)并执行的语句。

dungeonasdb.crea_personaggio
是您的表名吗?好的,我解决了问题,是数据库中的函数,我只使用表名编写了所有函数,而不是像“dbname.tablename”。另外,我认为你的答案是不正确的,因为PERFORM只在postgresql函数内部工作,不能从外部使用。但是谢谢你的时间:)关于
执行
你是对的。我已经改正了。在PostgreSQL中,您实际编写的是
schema\u name.function\u name(…)
schema\u name.table\u name
(或者通常
schema\u name.object\u name
)。不能从同一连接访问两个数据库(通过FDW除外)。在PostgreSQL中,有数据库->模式->对象。例如,在MySQL中,您只有数据库(=模式)->对象。答案解决了您的问题吗?如果是这样的话,通常会将其标记为已接受,这样人们就可以专注于未回答的问题。我没有使用过你的方法,但效果相同,现在我接受了,再次感谢!