3

私は問題に遭遇しました。PDO :: prepare()を使用して特定のクエリを作成し、パラメータを渡して実行すると、クエリは正しく実行されますが、パラメータの1つがデータベースに挿入されていないようです。prepareステートメントは次のようになります。

... SET col = :par1-:par2 ...

だから私がやろうとしているのは、データベースの列に値「[par1]-[par2]」を入れることです。問題は、最初のパラメーターがデータベースに保存されていないが、ダッシュと2番目のパラメーターは保存されていることです。したがって、上記のクエリからデータベースに格納されている結果の値は「-[par2]」です。

なぜそうなるのでしょうか?

4

1 に答える 1

6

あなたが書いたのは整数の引き算です。つまり、par1マイナスの結果par2をに書き込んでいますcol

代わりに$par1 . '-' . $par2、PDOの外部で文字列を作成し、それを他の名前付きパラメーターを介して渡す必要があります。

$stmt = $pdo->prepare('... SET col = :col');
$stmt->execute(['col' => $par1 . '-' . $par2]);
于 2012-07-21T17:43:40.200 に答える