比较两个PHP值时遇到问题。第一个值作为查询字符串中的参数传递,而第二个参数是sql查询的结果。
我在这里需要的逻辑是比较两个值,这样如果用户有足够的信用,他的付款就可以处理,否则会显示错误信息。
这是我的代码:
public function storeNewTicket($userId, $amount, $validity) {
$currentBalance = $this->getBalance($userId);
$floatCurrentBalance = floatval($currentBalance);
$floatAmount = floatval($amount);
if ($floatCurrentBalance > $floatAmount) {
/*Proceed with the insert*/
}
else {
echo "You don't have enough credit to process this payment."
}
}
在同一个名为getBalance()的文件中的单独函数中,我从另一个表中获取用户的当前余额并将其作为对象返回。我100%确定这是有效的。这是代码:
public function getBalance($userId) {
$stmt = $this->conn->prepare("SELECT balance FROM userbank WHERE UserId = ?");
$stmt->bind_param("s", $userId);
if ($stmt->execute()) {
$bal = $stmt->get_result()->fetch_assoc();
$stmt->close();
return $bal['balance'];
} else {
return NULL;
}
}
代码总是通过else子句并回显:You don't have enough credit to process this payment.
;
有人可以帮我理解如何将变量转换为小数或浮点数并进行比较吗?
答案 0 :(得分:1)
使用浮动时请使用BC Math函数。 要比较浮点数,请使用bccomp。
Returns 0 if the two operands are equal, 1 if the left_operand is larger than the right_operand, -1 otherwise.
请注意第三个参数是小数位后的位数。
答案 1 :(得分:0)
我发现问题究竟在哪里。 My getBalance()
方法实际上在转换为float时返回值1。 1是数组中记录的位置。将$floatCurrentBalance
的声明更改为:$floatCurrentBalance = floatval($currentBalance['balance']);