PDO查询中两个紧挨着的参数


Two parameters right next to each other in a PDO query?

我遇到了一个问题。当我使用PDO::prepare()构建某个查询,然后传递参数执行时,查询将正确执行,但其中一个参数似乎没有插入数据库。prepare语句如下:

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

因此,我要做的是将值"[par1]-[par2]"放入数据库的列中。问题是第一个参数没有存储在数据库中,但破折号和第二个参数是。因此,通过上述查询存储在数据库中的结果值是"-[par2]"。

为什么会这样?

您所写的是一个整数减法。因此,您正在将par1减去par2的结果写入col

相反,您应该在PDO之外创建字符串$par1 . '-' . $par2,然后通过其他命名参数传入:

$stmt = $pdo->prepare('... SET col = :col');
$stmt->execute(['col' => $par1 . '-' . $par2]);