Php 没有函数与plpgsql中的INSERT INTO匹配给定的名称和参数类型

Php 没有函数与plpgsql中的INSERT INTO匹配给定的名称和参数类型,php,postgresql,plpgsql,Php,Postgresql,Plpgsql,我使用Postgresql 9.3创建了此表: CREATE TABLE usuarios.token_usrpwd ( id_token serial NOT NULL, token character varying, fechahora_creacion character varying, CONSTRAINT token_usrpwd_pkey PRIMARY KEY (id_token) ) WITH ( OIDS=FALSE ); ALTER TABLE usuarios.

我使用Postgresql 9.3创建了此表:

CREATE TABLE usuarios.token_usrpwd
(
 id_token serial NOT NULL,
 token character varying,
 fechahora_creacion character varying,
 CONSTRAINT token_usrpwd_pkey PRIMARY KEY (id_token)
)
WITH (
OIDS=FALSE
);
ALTER TABLE usuarios.token_usrpwd
OWNER TO postgres;
然后我创建了函数:

CREATE OR REPLACE FUNCTION eiel.insert_usuario_tokenpwd(character varying, character varying)
 RETURNS boolean AS
$BODY$
DECLARE
 token_obtenido ALIAS FOR $1;
 fechahora_obtenido ALIAS FOR $2;
BEGIN
 INSERT INTO usuarios.token_usrpwd (token,fechahora_creacion) VALUES (token_obtenido,fechahora_obtenido);
  IF found THEN
        RETURN TRUE;
  ELSE
        RETURN FALSE;
  END IF;   
 END;
 $BODY$
   LANGUAGE plpgsql
函数和表都已正确创建。然后,当我从SQL控制台调用函数时,它会毫无问题地插入行:

SELECT eiel.insert_usuario_tokenpwd('190e526a2a54ff915d735026f9b64d8f','20150603112531')
但当我从php调用相同的查询时,问题就出现了:

$insql= "SELECT eiel.insert_usuario_tokenpwd('190e526a2a54ff915d735026f9b64d8f','20150603112531')";
$queryresult = pg_query($database_connection, $insql) or die("Error in query: $insql . " . pg_last_error($database_connection));
然后发生一个错误,并说:

警告:pg_query():查询失败:错误:不存在函数。插入_usuario_tokenpwd(未知,未知) 第1行:选择eiel。插入_usuario_tokenpwd('190E526A54FF915D73502。。。 ^ 提示:在第432行的F:\ms4w\apps\EIELv3\xfunctions.php中,Ninguna función重合于参数的名称和参数。Puede ser necesario agregar conversion explica de tipos 查询中出现错误:选择eiel.insert_usuario_tokenpwd('190E526A54FF915D735026F9B64D8F','20150603112531')。错误:不存在eiel.insert_usuario_tokenpwd(未知,未知) 第1行:选择eiel。插入_usuario_tokenpwd('190E526A54FF915D73502。。。 ^ 提示:这项功能与论据的名称和内容一致。我们需要解释这些内容

这意味着该函数不存在

提示:没有与给定名称和参数类型匹配的函数。您可能需要添加显式类型转换

我在这个论坛和其他论坛上寻找信息,并尝试添加演员阵容::角色变化或提供如下解决方案:

但还是不行。你知道发生了什么事或者我错过了什么吗

如有任何意见,将不胜感激


提前感谢。

由于同一查询在psql中成功,请检查php中的不同之处。可能是您连接的用户,也可能是数据库本身。它位于上下文中,而不是查询中。另一种可能是您在psql中的事务中创建了函数,但没有提交它。该事务可以看到函数但是没有其他人可以。我已经有了在psql和PHP中都可以使用的SELECT和UPDATE函数,这个问题只有在我开始使用INSERT函数时才会发生。我不确定你说的事务是什么意思,但gona对此进行了调查只是为了更清楚,我不建议调查PHP和psql cons之间的一般区别ole因为什么都不做,所以它与SQL引擎无关。我建议仔细检查特定的上下文(dbname、用户名、权限)对于这个特定的调用失败。是的,我的意思是,在我的php中,我已经调用了一些函数,比如使用相同的dbname、用户名、模式进行SELECT或UPDATE时不起作用的函数。问题解决了。你是对的@Daniel Vérité,php中的DB权限和对函数的访问出现了问题。谢谢谢谢你的帮助!