你好,我想用准备好的语句创建一个新的 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");
一切正常。
谁有提示? 谢谢
最佳答案
您不能为此目的使用准备好的语句。准备好的语句的参数只能引用数据值(比如在 INSERT
或 UPDATE
语句中,或者在你给出的 WHERE
示例中) . CREATE ROLE
语句中角色名称和密码的值需要作为字符串文字提供。
在 CREATE ROLE
中使用准备好的语句也完全没有用。准备好的语句用于计划一次复杂语句的执行,然后使用不同的参数多次执行它。 CREATE ROLE
语句并不复杂,如果可能的话,您也不会有足够的语句在单个 session 中运行以使准备好的语句有用。
关于php - pg_prepare 创建角色的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31448491/