2017-02-18 36 views
0

如何通过php计算告诉数据库不接受或插入或更新负值。Mysql XAMPP DONOT将负值插入行

考虑这个PHP代码:

<?php include('index2.php'); ?> 
<?php include('db.php'); ?> 
<?php 
$mobile = $_SESSION['mobile']; 
$date = date('M-d,Y H:i:s'); 
$date2 = date('M-d,Y'); 

if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
$amount = $_POST['amount']; 
$balance = $_POST['balance']; 

$balancenow = $balance - $amount; 

if ($amount > $balance) { 
    $sql3 = "UPDATE users SET balance = '$balancenow' 
    WHERE mobile = '$mobile'";   

    if ($conn->query($sql3) === TRUE) { 
     echo '<a href="index2.php"></a>'; 
    } else { 
     echo "0"; 
    } 
} else { 
    echo '<script language="javascript">'; 
     echo 'alert("You don't have enough coupon balance")'; 
    echo '</script>'; 
    echo '<a href="index2.php"></a>'; 
} 
$conn->close(); 
?> 

现在,在上面的例子中考虑: '量' 是500,并且平衡是250, 其中inturns让我们用计算为:

$balancenow = $balance - $amount;

= 250-500 = -250 

现在,在这种情况下,如何告诉数据库不接受负值并给出了其他语句来代替..

任何帮助表示赞赏..

+0

列类型是'signed'还是'unsigned'? – C2486

+0

为什么你不使用php检查它? –

+0

简单使用'if($ balancenow <0) {echo“negative”; } else {echo“positive”//插入数据库;}' – Saty

回答

1

好吧,在我看来,从DB端验证是正确的选择,这迫使程序员在正确的方式做的代码。

更新列架构来UNSIGNED INT仅存储非负值

无符号类型可用于在一个 柱以仅允许非负数或当需要一个更大的数字上限范围的列。 例如,如果INT列是UNSIGNED,列的 范围的大小是相同的,但其端点-2147483648转移和 2147483647到0和4294967295

您也可以验证你的数据PHP但是它的第二个级别。