簡體   English   中英

MySQL 數據庫中存儲的值錯誤

[英]Wrong value being stored in MySQL Database

所以我有一個 NodeMCU 被編程為將浮點數據發送到托管的 MySQL 數據庫。 我這樣做是為了讓我在串行監視器中打印正在發送的值,以確保它是正確的。 到目前為止,一切正常。

但是,當我檢查記錄的值時,它只有“1.00”。 例如,根據串行監視器的假設記錄值應該是“12.65”,但數據庫將有“1.00”。 我嘗試使用(float) $varfloatval($var)將變量類型轉換為浮點數,但結果仍然相同。 我錯過了什么?

    if ($_SERVER["REQUEST_METHOD"] == "POST")
    {
        $api_key = test_input(isset($_POST["api_key"]));

        if ($api_key = $api_key_value)
        {
            $var = test_input(isset($_POST["DB_Column"]));

            $insert_var = mysqli_query($conn, "INSERT INTO SCHEMA.Table(Time, Record)
                                VALUES(CURRENT_TIMESTAMP, '" . $var . "')
                                ;");

            if (!$insert_var)
            {
                die("Query failed: " . mysqli_error($conn));
            } 
        }
    }

    function test_input($data) 
    {
        $data = trim($data);
        $data = stripslashes($data);
        $data = htmlspecialchars($data);
        return $data;
    }

在這兩種情況下,您實際上都是從isset()返回 true 或 false 的值。

$var = test_input(isset($_POST["DB_Column"]));

如果你想確保有一個值,那么通常你會把它添加到你的初始測試中......

if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST["DB_Column"])...

或者給它一個默認值,使用?? , 這里默認為 0...

$var = test_input( $_POST["DB_Column"] ?? 0 );

另外,而不是使用test_input() ,您應該使用准備好的語句來防止 SQL 注入等, 如何防止 SQL 在 PHP 中注入? .

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM