Php MySQL-将1添加到名称为backticks的列中

Php MySQL-将1添加到名称为backticks的列中,php,mysql,Php,Mysql,我在MySQL中向列值添加1时遇到问题。我在列名上使用了反勾号,并且值没有递增。我的问题是: $update = $connectdb->prepare("UPDATE `strings` SET posted=posted, `response-comment`=`response-comment` + 1 WHERE `id`=?"); $update->execute(array($id)); 为什么我的查询不起作用?$id值正确,列响应注释应增加1。假设字符串是表的名

我在MySQL中向列值添加1时遇到问题。我在列名上使用了反勾号,并且值没有递增。我的问题是:

$update = $connectdb->prepare("UPDATE `strings` SET posted=posted, `response-comment`=`response-comment` + 1 WHERE `id`=?");
$update->execute(array($id));   

为什么我的查询不起作用?$id值正确,列响应注释应增加1。

假设字符串是表的名称,尝试将其用于SQL语句:

UPDATE `strings` SET `response-comment`=`response-comment` + 1 WHERE `id`=?
小心记号 如果编码不正确,最终可能会出现引号,从而将整数值转换为字符串,从而更改请求的行为。
您试过了吗,justresponse comment=response comment+1`

您能发布表的架构吗?它是一个普通表,没有任何约束。我试着更新另一个专栏,结果成功了。我想这跟列名中的破折号有关,这就是我使用backticks的原因。这通常是有效的。现在的问题是,将参数绑定到准备好的查询后,它会发生什么情况。我建议回显受影响的行数PDOStatement::rowCount或mysqli_stmt::$Infected_rows,以确保它确实在更新非零行数。$id错误或响应注释已在MAXINT或其他位置。还要检查警告。或者您正在更新一个数据库中的表,然后用相同的表名确认另一个数据库中的数据。我同意您的看法,更新查询中的post=post看起来很奇怪,只是浪费时间和资源。但是这不应该影响查询的操作。我尝试了这个,但仍然没有更新,应该可以,我看不出有任何问题。如果直接执行而不是通过PHP执行,语句可以工作吗?如果是这样的话,这可能表明PHP中存在一些错误。