php - pg_prepare 创建角色的问题?

标签 php postgresql

你好,我想用准备好的语句创建一个新的 postgresql 角色: 我的代码:

$stmt = pg_prepare($conn,"test","CREATE ROLE $1 WITH LOGIN PASSWORD $2 NOCREATEDB NOCREATEROLE");
    $result = pg_execute($conn,"test",array($username,$password));
    if (!$result){
        die("error in SQL query:".pg_last_error());
    }

但是我在执行时遇到了这个错误: PHP 警告:pg_prepare():查询失败:FEHLER:Syntaxfehler bei »$1«

如果我尝试一个简单的选择:

$stmt = pg_prepare($conn,"test","Select * from pg_user where usename=$1");

一切正常。

谁有提示? 谢谢

最佳答案

您不能为此目的使用准备好的语句。准备好的语句的参数只能引用数据值(比如在 INSERTUPDATE 语句中,或者在你给出的 WHERE 示例中) . CREATE ROLE 语句中角色名称和密码的值需要作为字符串文字提供。

CREATE ROLE 中使用准备好的语句也完全没有用。准备好的语句用于计划一次复杂语句的执行,然后使用不同的参数多次执行它。 CREATE ROLE 语句并不复杂,如果可能的话,您也不会有足够的语句在单个 session 中运行以使准备好的语句有用。

关于php - pg_prepare 创建角色的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31448491/

相关文章:

PHP/SQL : If statement within the query?

ruby-on-rails - Rails 不会为主键使用序列?

sql - 无法在 jsonb 对象字段中搜索文本

sql - 两个不同的选择进入同一个临时表

postgresql - 将参数传递给触发器函数

javascript - 如何在yii中的div onclick中加载页面?

php - 同一页上的两个 mysql 查询搜索?

PHP/Javascript - 更改按钮图像并调用数据库 onClick()?

sql-server - SQL Server 使用复制命令生成 "Text File"数据导入 postgresql

php - 将 PHP 与 Mysqli 一起使用时发生的困惑情况