Php 检查select查询的结果,然后与当前值进行比较(如果可用),则不应插入

Php 检查select查询的结果,然后与当前值进行比较(如果可用),则不应插入,php,mysql,Php,Mysql,我正在使用地理定位api将latlong保存到mysql数据库中,但问题是数据库中插入的latlong是相同的。我正在尝试检查mysql表的最后一行,然后与当前latlong进行比较,如果两者相同,则不应执行。请帮我获取此信息。提前感谢 纬度=19.1579; $longitude=72.9935; $address=airoli; $sql=“从tracklatlong ORDER按id DESC LIMIT 1选择纬度”; $result=mysqli\u查询($sql,$conn); $r

我正在使用地理定位api将latlong保存到mysql数据库中,但问题是数据库中插入的latlong是相同的。我正在尝试检查mysql表的最后一行,然后与当前latlong进行比较,如果两者相同,则不应执行。请帮我获取此信息。提前感谢

纬度=19.1579;
$longitude=72.9935;
$address=airoli;
$sql=“从tracklatlong ORDER按id DESC LIMIT 1选择纬度”;
$result=mysqli\u查询($sql,$conn);
$row=mysqli\u fetch\u数组($result);
$currentlat=$_行[“纬度];
如果($currentlat!=$latitude){
$query=“插入'tracklatlong'(纬度、经度、地址)值('$latitude','$longitude','$address')”;
如果($conn->query($query)==TRUE){
呼应“成功”;
}
否则{
echo“失败”;
}
}
否则{
回声“已经存在”;
}

正如所理解的,您需要检查latitute或longitute是否在
数据库表中
只有在发现false时才插入它

我将PHP面向对象与mysqli准备的语句一起使用

此代码仅在latitute和longitute相同时返回false。 如果希望输出返回false,那么除了在
选择
查询中添加
运算符外,还有任何一个匹配输出

这是包含数据的表图像

下面是html代码:index.php

 <?php
    include('co_ordinate.php');
    $newcoordinate = new co_ordinate();
?>
<!DOCTYPE html>
<html>
<head>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

<!-- Latest compiled JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
    <div class="col-md-6 col-md-offset-3" style="margin-top:100px;">
        <form action="" method="post">
            <div class="form-group">
                <i>Add Latitute</i>
                <input type="text" name="latitute" class="form-control">
            </div>

            <div class="form-group">
                <i>Add Longitute</i>
                <input type="text" name="longitute" class="form-control">
            </div>

            <div class="form-group">
                <input type="submit" name="addcoordinate" class="btn btn-primary">
            </div>
        </form>
        <?php
            if(isset($_POST['addcoordinate'])){
                $latitude = $_POST['latitute'];
                $longitute = $_POST['longitute'];

                $newcoordinate->getCo_ordinates($latitude,$longitute);
            }
        ?>
    </div>
</body>
</html>

加拉提图
添加长形
下面是类文件:coordination.php

    <?php
    class co_ordinate{
        private $link;

        function __construct(){
            $this->link = new mysqli ('localhost','root','','example');
            if(mysqli_connect_errno()){
                die("connection Failed".mysqli_connect_errno());
            }
        }

        function getCo_ordinates($latitude,$longitute){
            $sql = $this->link->stmt_init();
            if($sql->prepare("SELECT latitude,longitude FROM tracklatlong WHERE latitude=? AND longitude= ?")){
                $sql->bind_param('dd',$latitude,$longitute);
                $sql->execute();
                $sql->store_result();
                if($sql->num_rows > 0){
                    echo "The Co-Ordinates Already Exists";
                }
                else
                {
                    $query = $this->link->stmt_init();
                    if($query->prepare("INSERT INTO tracklatlong (latitude,longitude) VALUES (?,?)")){
                        $query->bind_param('dd',$latitude,$longitute);
                        $query->execute();
                        echo "The Co-Ordinates Inserted Successfully";
                    }
                }
            }
            else
            {
                echo $this->link->error;
            }
        }
    }
?> 

正如所理解的,您需要检查latitute或longitute是否在
数据库表中
只有在发现false时才插入它

我将PHP面向对象与mysqli准备的语句一起使用

此代码仅在latitute和longitute相同时返回false。 如果希望输出返回false,那么除了在
选择
查询中添加
运算符外,还有任何一个匹配输出

这是包含数据的表图像

下面是html代码:index.php

 <?php
    include('co_ordinate.php');
    $newcoordinate = new co_ordinate();
?>
<!DOCTYPE html>
<html>
<head>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

<!-- Latest compiled JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
    <div class="col-md-6 col-md-offset-3" style="margin-top:100px;">
        <form action="" method="post">
            <div class="form-group">
                <i>Add Latitute</i>
                <input type="text" name="latitute" class="form-control">
            </div>

            <div class="form-group">
                <i>Add Longitute</i>
                <input type="text" name="longitute" class="form-control">
            </div>

            <div class="form-group">
                <input type="submit" name="addcoordinate" class="btn btn-primary">
            </div>
        </form>
        <?php
            if(isset($_POST['addcoordinate'])){
                $latitude = $_POST['latitute'];
                $longitute = $_POST['longitute'];

                $newcoordinate->getCo_ordinates($latitude,$longitute);
            }
        ?>
    </div>
</body>
</html>

加拉提图
添加长形
下面是类文件:coordination.php

    <?php
    class co_ordinate{
        private $link;

        function __construct(){
            $this->link = new mysqli ('localhost','root','','example');
            if(mysqli_connect_errno()){
                die("connection Failed".mysqli_connect_errno());
            }
        }

        function getCo_ordinates($latitude,$longitute){
            $sql = $this->link->stmt_init();
            if($sql->prepare("SELECT latitude,longitude FROM tracklatlong WHERE latitude=? AND longitude= ?")){
                $sql->bind_param('dd',$latitude,$longitute);
                $sql->execute();
                $sql->store_result();
                if($sql->num_rows > 0){
                    echo "The Co-Ordinates Already Exists";
                }
                else
                {
                    $query = $this->link->stmt_init();
                    if($query->prepare("INSERT INTO tracklatlong (latitude,longitude) VALUES (?,?)")){
                        $query->bind_param('dd',$latitude,$longitute);
                        $query->execute();
                        echo "The Co-Ordinates Inserted Successfully";
                    }
                }
            }
            else
            {
                echo $this->link->error;
            }
        }
    }
?> 


因此,您希望先检查数据库中的lat long,然后添加
$currentlat=$\u行[“纬度]=>
$currentlat=$row[“纬度”]
在复合
(纬度、经度)
上添加
唯一的
约束@Anant yes要检查的数据库的最后一行,如果当前latlong相同,则不应插入。知道吗?那么您的问题在于查询数据库?如果您没有从
$row['latitude']
中得到任何结果,那么您将始终插入一条新记录…因为
$latitude
(如果它有值)将永远不会等于
$currentlat
,所以您希望先检查数据库中的lat long,然后添加
$currentlat=$\u row[“latitude”]=>
$currentlat=$row[“纬度”]
在复合
(纬度、经度)
上添加
唯一的
约束@Anant yes要检查的数据库的最后一行,如果当前latlong相同,则不应插入。知道吗?那么您的问题在于查询数据库?如果您没有从
$row['latitude']
获得任何结果,那么您将始终插入一条新记录…因为
$latitude
(如果它有值)将永远不会等于
$currentlat