gpt4 book ai didi

PHP 调用 PostgreSQL 函数 - 类型问题?

转载 作者:可可西里 更新时间:2023-10-31 23:35:19 26 4
gpt4 key购买 nike

我在 PostgreSQL/plpgsql 中有一个具有以下签名的函数:

CREATE OR REPLACE FUNCTION user_login(TEXT, TEXT) RETURNS SETOF _get_session AS $$ ... $$

其中 _get_session 是一个 View 。从 phpPgAdmin 调用它时该函数工作正常,但是当我从 PHP 调用它时,我收到以下错误:

Warning: pg_query() [function.pg-query]: Query failed: ERROR: type "session_ids" does not exist CONTEXT: compile of PL/pgSQL function "user_login" near line 2 in /home/sites/blah.com/index.php on line 69

函数的 DECLARE 部分包含以下变量:

oldSessionId session_ids := $1;
newSessionId session_ids := $2;

域 session_ids 确实存在,并且使用相同域的其他函数在从相同脚本调用时工作。 PHP如下:

$query = "SELECT * FROM $dbschema.user_login('$session_old'::TEXT, '$session'::TEXT)";
$result = pg_query($login, $query);

我也试过在调用函数时使用 ::session_ids 代替 ::TEXT,但是我收到了同样的错误。

帮助:o(

最佳答案

只需让您的代码简单:

$query = "SELECT * FROM $dbschema.user_login($1, $2)";
$result = pg_query_params($login, $query, array($session_old, $session));

现在您可以免受 SQL 注入(inject)攻击了。

但是,您的函数仍然是错误的,没有数据类型“session_ids”。我认为您想在 DECLARE 部分使用 TEXT。

关于PHP 调用 PostgreSQL 函数 - 类型问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2668908/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com