如何使用php查询创建具有权限的postgres用户

如何使用php查询创建具有权限的postgres用户,php,sql,postgresql,privileges,Php,Sql,Postgresql,Privileges,我想使用php创建一个对数据库中的表具有所有权限的用户,但我的代码无法正常工作。 我尝试使用以下代码: $query="CREATE USER $1 WITH password $2"; $result = pg_prepare($dbh, "", $query); $result = pg_execute($dbh, "", array($utente, md5($psw))); $query="GRANT ALL PRIVILEGES ON match to $1"; $resu

我想使用php创建一个对数据库中的表具有所有权限的用户,但我的代码无法正常工作。 我尝试使用以下代码:

 $query="CREATE USER $1 WITH password $2";
 $result = pg_prepare($dbh, "", $query);
 $result = pg_execute($dbh, "", array($utente, md5($psw)));

 $query="GRANT ALL PRIVILEGES ON match to $1";
 $result = pg_prepare($dbh, "", $query);
 $result = pg_execute($dbh, "", array($utente));
然后我试着改变它,把变量移到字符串之外,但它也不起作用

 $query="CREATE USER " .$utente . " WITH password ". md5($psw);
 $result = pg_prepare($dbh, "", $query);
 $result = pg_execute($dbh, "", array());

 $query="GRANT ALL PRIVILEGES ON match to " . $utente;
 $result = pg_prepare($dbh, "", $query);
 $result = pg_execute($dbh, "", array());
$result为false,在我的数据库中,我没有获得要创建的新用户。

  • 用户名是一个标识符,可以用双引号括起来,也可以按原样保留
  • 密码是一个文本值,必须用单引号括起来
一般来说:传递给查询的所有值都应视为准备好的语句变量。在这种情况下,我无法用
pg_prepare
中的参数数组中的值替换
$1

下面是一个用“手”逃逸的工作示例


请你详细说明我的代码不能正常工作是什么意思?你有错误吗?@GMB我是说pg_execute返回false,它什么也没做。我的数据库中没有新用户
$utente = pg_escape_identifier('username');
$psw = pg_escape_string('pass');

$query="CREATE USER {$utente} WITH password '{$psw}'";
pg_prepare($dbh, "", $query);
$result = pg_execute($dbh, "", []);