我遇到了一个问题。当我使用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]);