pg_query_params返回错误:绑定消息提供2个参数,但是准备好的语句""需要1

DPZ*_*DPZ 10 php postgresql prepared-statement

$Query = pg_query_params($db, 'SELECT username FROM users WHERE id = $1 AND password=(crypt(\'$2\',password)) LIMIT 1', array(33,'thepassword'));
Run Code Online (Sandbox Code Playgroud)

"绑定消息提供2个参数,但准备好的语句""需要1"

问题似乎围绕'$ 2'参数,heredoc字符串不起作用.

建议?

mu *_*ort 16

单引号在SQL中用于字符串文字.这意味着:

'$2'
Run Code Online (Sandbox Code Playgroud)

仅仅是一个包含字符的字符串$2,而不是一个占位符.如果你想要一个占位符,你需要省略引号:

$Query = pg_query_params($db, '...password=(crypt($2,password))...', array(33,'thepassword'));
Run Code Online (Sandbox Code Playgroud)

这给了你占位符而不是字符串文字.