【问题标题】:PHP, SQL query save '0' in float database when entered String from the php form当从 php 表单输入字符串时,PHP、SQL 查询在浮点数据库中保存“0”
【发布时间】:2019-12-02 02:00:11
【问题描述】:

当数据类型错误时,网站应该中止查询。但我得到的是,如果我将字符串值放入浮点数据类型,它会保存为 '0'。

<?php  
 require('db_connect.php');

if (isset($_POST['prodName']) and isset($_POST['prodPrice']) and isset($_POST['prodQuantity'])){

// Assigning POST values to variables.
$name = $_POST['prodName'];
$price = $_POST['prodPrice'];
$quantity = $_POST['prodQuantity'];

// CHECK FOR THE RECORD FROM TABLE
$query = "INSERT INTO product (name, price, quantity) VALUES ('$name','$price','$quantity')";

$result = mysqli_query($connection, $query) or die(mysqli_error($connection));

if ($query){

//echo "Login Credentials verified";
echo "<script type='text/javascript'>
    alert('Product Added');
    window.location.href='menu.php';
</script>";
}
else{
echo "
<script type='text/javascript'>
    alert('Invalid Login Credentials');
    window.location.href='login.php';
</script>";
//echo "Invalid Login Credentials";
}
}
?>

【问题讨论】:

    标签: php sql phpmyadmin


    【解决方案1】:

    请将 $result 而不是 $query 放在 if 条件中。至于'0'的查询结果,如果我没记错的话,就是false,意思是你尝试插入的数据,由于错误(很可能是数据类型)无法保存。您应该在插入之前先验证 $_POST 值。

    例如:

    if (is_float($_POST['prodName']) === false || is_float($_POST['prodPrice']) === false 
    || is_float($_POST['prodQuantity']) === false) 
    && echo "<script type='text/javascript'>
    alert('Invalid Login Credentials');
    window.location.href='login.php'; </script>";
    

    通过验证,您可以防止不想要的值进入您的数据库,并将损害整个 Web 应用程序的风险降至最低。

    【讨论】:

    • 谢谢,我没有意识到自己的错误
    猜你喜欢
    • 1970-01-01
    • 2019-08-13
    • 2019-05-26
    • 2015-01-28
    • 2015-09-24
    • 1970-01-01
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多