php - 更新 MySQL 字段中的 int

标签 php mysql increment

如何在 MySQL 数据库的单元格中增加一个整数?我知道自动递增是没有用的,因为我不想添加新行,只是更新现有行。我目前正在使用它(用于澄清的 POST var,已在真实代码中验证):

$columnToUpdate = 'type'.$_POST['voteid'];
$query = "UPDATE myTable $columnToUpdate = $columnToUpdate+1 WHERE id=1;";
if(!mysql_query($query)) {
    echo json_encode(array('success' => false, 'message' => 'Update failed: '.mysql_error()));
    exit;
}

在数据库中我有 6 个字段,id、type1、type2、type3、type4、type5 和一个 id 设置为 1 的行。目的是接收一个数字 (1-5),并建立一个引用在更新字段之前转到正确的列。这导致 Update failed: 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本对应的手册,了解在第 1 行的 '=type4+1 WHERE id=1' 附近使用的正确语法,所以我猜它在递增之前没有正确获取字段值。

一旦这个工作正常,我还需要以相同的方式递减一个字段,除非它的值为 0。所以为了加分,我可以在一个查询中完成所有这些操作还是拆分它会更好起来?

最佳答案

我认为您在查询中遗漏了关键字“SET” - 尝试

$query = "UPDATE myTable SET $columnToUpdate = $columnToUpdate+1 WHERE id=1;";

编辑:

要执行“递减,除非它为零”你可以使用类似的东西:

UPDATE myTable SET $columnToUpdate = 
CASE $columnToUpdate 
    WHEN 0 THEN 0
    ELSE $columnToUpdate - 1
END CASE
WHERE id=1;`

关于php - 更新 MySQL 字段中的 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6140485/

相关文章:

php - WordPress 搜索不适用于超过 87 个字符的搜索词

MySQL Join 使用 WHERE 子句返回太多行

excel - 在 Excel 中增加月份并转换为文本

mysql - 将新列添加到现有的复合唯一键

mysql - 如何在行版本化MySQL表(SCD类型2)中设置主键、自增和索引?

jqGrid 插件 - 没有自动行 ID?

改变函数中某些东西的值

php - 将参数从 Controller 传递到 codeigniter 中查看

php - 提交表单时出现 MYSQL 错误

C# 通过 HTTP 上传文件