【问题标题】:SUM SQL value to increment values per sessionSUM SQL 值以增加每个会话的值
【发布时间】:2014-02-18 02:33:38
【问题描述】:

这很尴尬,这是一个非常简单的取值,否则等于求和然后保存...但是不起作用...

我有一个预定义值为 1010,所以,我选择 SQL 中的最后一个条目,如果最后一个条目大于 1010,则获取该值并加 1,然后将其保存,现在最后一个值为 1011 正确?但不是……

$values_b = 1010;
$getval = 'SELECT number FROM table ORDER BY number DESC LIMIT 1';
$final = $con->query($getval);
$vals = $final ->fetch_array();
$numbers = $vals['number'];

if ($numbers > 1010){
$new_n = $numbers + 1;
$new_numbers = 'INSERT INTO table (number) VALUES ('$new_n')';
$con->query($new_numbers);
} else {
$new_numbers = 'INSERT INTO table (number) VALUES ('$values_b')';
$con->query($new_numbers);
}

非常简单,但结果有些尴尬,它不保存 1010 或 1011 或任何类型的......而是保存 2325,为什么会这样????我没有在其他任何地方使用这个值,这些是唯一变量,但我真的不明白,这是第一次发生这种情况,我的表是 utf-8-general-ci,列是 INT(20) 我尝试过 VARCHART(100) 但结果几乎一样...

我想要实现的是“简单”,我有一个自定义数字 1010,所以,如果这是第一条记录,则保存该数字 1010,如果不是,则获取最后一条记录,例如 1020,这意味着有 10 条记录,只需将 1 与最后一条记录相加 1020 + 1 = 1021 并保存...看,很简单,但由于某种原因没有这样做...所以我想知道是否有人可以帮我解决这个问题...

感谢您抽出宝贵时间


已解决
这里的问题是查询,我正在调用名称不正确的列
该表大约有 19 列,前 5 列是
身份证 |姓名 |电子邮件 |数字.....第16列是|号码 |
我打电话给号码,而实际上我应该打电话给号码,我得到的结果来自另一个文件,所以,换句话说,我从 B 得到结果,当我应该使用 A.. .
这完全是我的错,我应该多加注意……对不起,伙计们……

【问题讨论】:

  • 是的,是的,但这不是问题,这只是我所拥有的整个代码的原始示例,感谢您的注意...
  • 好的,每个定义的数字是 72402321,所以在第一个查询中,我检查是记录并打印数组 [number] => 2014280136,这很奇怪,因为我没有t 什么都不保存,反正它应该打印 0,加 1 保存的值是 2014280137,那么这个数字 2014280136 是从哪里来的?
  • 我测试了您的代码并使用了WHERE 子句,正如您所拥有的那样,它将1101(从1100 - 我将1100 作为开始插入我的列)插入到名为@ 的列中987654324@,所以是您的查询失败了。我还想指出,您需要将查询用双引号括起来,这 'INSERT INTO table (number) VALUES ('$new_n')'; 会引发错误,应该是 "INSERT INTO table (number) VALUES ('$new_n')"; --- 但是,如果这是您自己测试的方式,然后显示您实际使用的内容;这是骗人的。
  • 你对双引号是正确的,我应该使用 " 而不是 ' 只是我的代码越多越复杂,以至于有时我忘记了我的变量'正在使用......我已经解决了......问题是查询但不完全是,问题是我调用的列......
  • 啊,酷。很高兴知道你解决了它。我有一种感觉,就是这样。 / 部分正确 ;-)

标签: php sql


【解决方案1】:

试试这个:

$values_b = 1010;
$getval = 'SELECT max(number) as bignumber FROM table';
$final = $con->query($getval);
$vals = $final ->fetch_array();
$numbers = $vals['bignumber'];

if ($numbers > 1010){
$new_n = $numbers + 1;
$new_numbers = 'INSERT INTO table (number) VALUES ('$new_n')';
} else {
$new_numbers = 'INSERT INTO table (number) VALUES ('$values_b')';
}
$con->query($new_numbers);

【讨论】:

  • nop,最大的问题是没有保存 1010 或者如果我将 1 添加到 1010 那么它应该保存 1011 但不是,而是保存 2325,这是非常...
  • 这也可能是因为,由于结果而正在检索的表中的最大值是2325
猜你喜欢
  • 1970-01-01
  • 2015-02-26
  • 2023-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多