来自 PHP、SQL 查询的奇怪结果

空值

我正在做一个与数据库一起工作的实验,我得到了这个奇怪的结果。

系统是这样的:我有一个按钮,每次你点击它时,计数器都会加 1。一旦达到一定数量,它会计算分数扣除并更新分数

PHP:

$counter = $_POST['counter'];
$user = $_POST['user'];

$sql = "SELECT score FROM board WHERE player = '$user'";
$result = mysqli_query($con,$sql);
$row = mysqli_fetch_array($result);

if($counter == 1)
  $divisor = 0;
else if($counter == 5)
  $divisor = 0.1;
else if($counter == 20)
  $divisor = 0.3;
else if($counter == 50)
  $divisor = 1;}

$deduction = $row['score'] * $divisor;

$sql = "UPDATE board SET score = score - ".$deduction." WHERE player = '$user'";

我从 score = 10 开始,这些是结果

Score: 10
Counter: 1

Divisor = 0; Deduction = 10 * 0;
UPDATE ... score = score - Deduction (0)
New score = 10
-------------------------------------

Score: 10
Counter: 5

Divisor = 0.1; Deduction = 10 * 0.1;
UPDATE ... score = score - Deduction (1)
New score = 9
-------------------------------------

Score: 9
Counter: 20

Divisor = 0.3; Deduction = 9 * 0.3;
UPDATE ... score = score - Deduction (2.7)
New score = 6.3
-------------------------------------

## Here is the curious part

Score: 6.3
Counter: 50

Divisor = 1; Deduction = 6.3 * 1;
UPDATE ... score = score - Deduction (6.3)
New score = 0.000000190735

知道为什么我得到0.000000190735吗?我现在真的有点困惑。

巴格兹,

戈登·利诺夫

评论有点长。

毫无疑问,这是由查询的字符串的不同表示score和/$divisor或转换为$divisor字符串引起的。很难准确指出问题出在哪里,因为有几个不同的地方。

如果你真的需要处理这个,在数据库中进行计算:

UPDATE board
    SET score = score * (1 - ?)
    WHERE player = ?;

将占位符作为参数传入——而不是修改查询字符串。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

格式化来自SQL查询的结果

来自分类Dev

没有来自SQL查询的结果

来自分类Dev

格式化来自SQL查询的结果

来自分类Dev

显示来自SQL查询的多个结果

来自分类Dev

来自Oracle查询的PHP结果数

来自分类Dev

来自mysql查询结果的php数组

来自分类Dev

为ORACLE SQL查询生成的奇怪结果

来自分类Dev

来自表的 SQL 查询

来自分类Dev

来自类似T-SQL查询的不同结果

来自分类Dev

用php 5显示来自mysql查询的结果

来自分类Dev

在 php 中打印来自 db2 查询的单个结果

来自分类Dev

来自 PHP 查询的 MySQL 查询

来自分类Dev

来自PHP请求的意外结果

来自分类Dev

合并来自SQL的两个结果以在php上回显

来自分类Dev

来自SQL查询的多维数组

来自分类Dev

来自SQL查询的多维数组

来自分类Dev

来自模型的Magento SQL查询

来自分类Dev

sql子查询来自哪里

来自分类Dev

需要帮助诊断来自C#的SQL Server奇怪的查询超时

来自分类Dev

SQL查询忽略WHERE子句并给出奇怪的结果

来自分类Dev

SQL中使用NULL查询产生奇怪的结果NOT IN

来自分类Dev

MySQL上REGEXP匹配的奇怪SQL查询结果

来自分类Dev

SQL:查询多个表,仅查询来自一个表的最新结果,并查询来自另一个表的所有结果

来自分类Dev

SQL:查询多个表,仅查询来自一个表的最新结果,并查询来自另一个表的所有结果

来自分类Dev

来自PHP的SQL错误

来自分类Dev

解析来自mysql查询的结果

来自分类Dev

解析来自mysql查询的结果

来自分类Dev

来自 MongoDB 查询的订单结果

来自分类Dev

来自interp3的奇怪结果