[英]Wrong value being stored in MySQL Database
所以我有一個 NodeMCU 被編程為將浮點數據發送到托管的 MySQL 數據庫。 我這樣做是為了讓我在串行監視器中打印正在發送的值,以確保它是正確的。 到目前為止,一切正常。
但是,當我檢查記錄的值時,它只有“1.00”。 例如,根據串行監視器的假設記錄值應該是“12.65”,但數據庫將有“1.00”。 我嘗試使用(float) $var
和floatval($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.