Php 在PDO查询中,两个参数彼此相邻?

Php 在PDO查询中,两个参数彼此相邻?,php,mysql,pdo,Php,Mysql,Pdo,我遇到了一个问题。当我使用PDO::prepare()构建某个查询,然后传递要执行的参数时,查询将正确执行,但其中一个参数似乎没有插入数据库。prepare语句如下所示: ... SET col = :par1-:par2 ... 所以我要做的是将值“[par1]-[par2]”放入数据库的列中。问题是第一个参数没有存储在数据库中,但是破折号和第二个参数被存储在数据库中。因此,从上面的查询中存储在数据库中的结果值是“-[par2]” 为什么会这样?你写的是一个整数减法。因此,您正在将par1减

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

... SET col = :par1-:par2 ...
所以我要做的是将值“[par1]-[par2]”放入数据库的列中。问题是第一个参数没有存储在数据库中,但是破折号和第二个参数被存储在数据库中。因此,从上面的查询中存储在数据库中的结果值是“-[par2]”


为什么会这样?

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

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

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

您要插入哪些值(字符串、整数…)?目标列类型是什么?您是否尝试过在破折号周围添加空格?@DCoder-这两个参数都是字符串。然后您需要按照NikiC的建议预先生成最终值,或者使用类似的方法生成字符串。我赞成第一种选择。