Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 删除大纲视图的SQL触发器_Php_Mysql_Sql_Sql Server 2008 - Fatal编程技术网

Php 删除大纲视图的SQL触发器

Php 删除大纲视图的SQL触发器,php,mysql,sql,sql-server-2008,Php,Mysql,Sql,Sql Server 2008,我将值发送到与MySQL数据库位于同一服务器上的php脚本。php脚本将值发送到数据库。然而,在路径的某个地方,有时一个值丢失了一个小数点,我得到了一个非常高的值 我正在监测PH值和其他一些情况,因此该数字相对较低(在4-12之间)。有时候我的成绩是720而不是7.20。这应该通过触发器来纠正吗?如果是,怎么做?还是应该在PHP端处理?如何在输入时不接受值或使其为空?谢谢你抽出时间 <!DOCTYPE html> <html> <body>

我将值发送到与MySQL数据库位于同一服务器上的php脚本。php脚本将值发送到数据库。然而,在路径的某个地方,有时一个值丢失了一个小数点,我得到了一个非常高的值


我正在监测PH值和其他一些情况,因此该数字相对较低(在4-12之间)。有时候我的成绩是720而不是7.20。这应该通过触发器来纠正吗?如果是,怎么做?还是应该在PHP端处理?如何在输入时不接受值或使其为空?谢谢你抽出时间

<!DOCTYPE html>
<html> 
    <body>
        <h1></h1>
        <?php
        // Create connection
        $con = mysqli_connect("localhost", "***", "***", "***");
        // Check connection
        if (mysqli_connect_errno()) {
            echo "Failed to connect to MySQL: " . mysqli_connect_error();
        }

        $temp1 =  ( $_GET["1"]  * 9/5)+32;
        $temp2 =  ( $_GET["3"] *   9/5)+32;

        if ($_SERVER["REQUEST_METHOD"] == "GET") {
            $sql = "INSERT INTO `ANALOG_SENSORS` (`TEMPERATURE`, `HUMIDITY`, `TEMPERATURE2`, `HUMIDITY2`,`PH`,`DATE_TIME`)
            VALUES (" . $temp1 . ", " . $_GET["2"] . ", " . $temp2 . ", " . $_GET["4"] . ", " . $_GET["5"] . ", 
            NOW()- INTERVAL 7 HOUR)"; 
            $result = mysqli_query($con, $sql);
        }


    </body>
</html>

浮点变量(浮点/双精度)应作为浮点变量处理

在MySQL和PHP中,有效的浮点数是整数和小数部分之间带有点的数字

var_dump(floatval('13.37')) => double(13.37)
var_dump(floatval('13,37')) => double(13)
如你所见,在昏迷状态下,小数部分被截断,MySQL的行为与此完全相同

您必须确保输入数据的格式是必须的

$ph = str_replace(',', '.', $_GET['5']);
在MySQL查询中,coma是保留字符,如果数据包含coma且不是字符串(如本例所示),则coma将被解释为分隔符,并向insert查询添加一个新列

SELECT 1.2   => 1.2
SELECT 1,2   => [1, 2]

另外,请确保MySQL表字段的类型正确设置为float/double。

注意,您似乎对SQL注入非常开放,您的数据库将被自动化工具接管。你应该使用,否则后果自负。“这应该通过触发器纠正吗?”。在我看来:不是。如果你在插入数据库的过程中丢失了小数,你应该修复它。如果您由于测量误差而得到一个异常值,您应该在得到它时存储它。当您处理数据时,您可能希望将其包括在内、尝试修复或过滤掉。此外,触发器在更复杂的过滤器中是不够的,例如,首先收集所有数据,然后过滤掉3 std.dev之外的任何内容。此外,保留这些值还允许您稍后运行统计信息,例如确定一段时间内的读取错误数。