(PHP/Postgresql)调用返回void的函数?
在PHP代码中,我试图调用一个返回void的函数,使用pg_prepare/pg_uexecute,这让我抓狂(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
$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中,您只有数据库(=模式)->对象。答案解决了您的问题吗?如果是这样的话,通常会将其标记为已接受,这样人们就可以专注于未回答的问题。我没有使用过你的方法,但效果相同,现在我接受了,再次感谢!