3
存在しない、私は私が準備された文なしでクエリ以下のことができ、そしてそれは完全に正常に動作し、これを使用して、この方法()エラーの「name」の
function __construct($host, $user, $pass, $db) {
$this->link = pg_connect("host=$host port=5432 dbname=$db user=$user password=$pass") or $this->error();
}
public function run($sql, $args = null) {
if(!$args)
$this->query = pg_query($sql);
else {
$v = md5(uniqid(mt_rand(), true));
$this->query = pg_prepare($v, $sql);
$this->query = pg_execute($v, $args);
}
return $this;
}
でシンプルなDBクラスを持っています。私は準備を行う際
$db->run("
INSERT INTO userExercise (userid, exerciseid, date, sets)
VALUES ($user->id, $exerciseid, '$date', '$sets')
ON CONFLICT (userid, date, exerciseid)
DO UPDATE SET sets = '$sets'
RETURNING LASTVAL()"
);
は、しかし、私はエラー「ERROR:プリペアドステートメント 『を取得41982c47c3c84749552cd9808ad03422を一意の名前を与えることをmd5
起因する
$db->run("
INSERT INTO userExercise (userid, exerciseid, date, sets)
VALUES ($1, $2, $3 $4)
ON CONFLICT (userid, date, exerciseid)
DO UPDATE SET sets = $4
RETURNING LASTVAL()",
[$user->id, $exerciseid, $date, $sets]
);
41982c47c3c84749552cd9808ad03422
を』存在しません」。この問題はON CONFLICT
にあるようです。どうすればこの問題を解決できますか?
'$ v =" abc "'を設定すると動作しますか? –
同じエラーが発生しました。準備されたステートメント "abc"は存在しません – ditto