Php 在JSON对象中为mysql表指定唯一键

Php 在JSON对象中为mysql表指定唯一键,php,android,mysql,Php,Android,Mysql,我正在实现一个创建下面JSON字符串的应用程序。应用程序记录JSON数据,并在后台每隔60秒将其发送到服务器。用户可以使用该应用程序向服务器查询公交车位置,结果将显示在带有标记的谷歌地图中 JSON的数据将首先插入总线表中,然后用插入更新。在bus表中,我没有任何UNIQUE键,因此我应该在应用程序的JSON字符串中添加一个人bus_id,以了解必须更新哪个记录,因此我问自己是否可以生成该记录,然后在发送之前将其添加到JSON字符串中。在我的情况下,如何生成总线id唯一密钥 JSON对象: {

我正在实现一个创建下面JSON字符串的应用程序。应用程序记录JSON数据,并在后台每隔60秒将其发送到服务器。用户可以使用该应用程序向服务器查询公交车位置,结果将显示在带有标记的谷歌地图中

JSON的数据将首先插入
总线
表中,然后用
插入
更新。在bus表中,我没有任何
UNIQUE
键,因此我应该在应用程序的JSON字符串中添加一个人
bus_id
,以了解必须更新哪个记录,因此我问自己是否可以生成该记录,然后在发送之前将其添加到JSON字符串中。在我的情况下,如何生成
总线id
唯一密钥

JSON对象:

{  
 "latitude":84.16898451,
 "longitude":3.16561387,
 "route":45
} 
PHP脚本

<?PHP

$json = '{"bus_id": "gernerated value", "latitude":84.16898451,"longitude":3.16561387,"route":45}';

$data = json_decode ( $json );

$bus_id = "it should be generated in the app";
$route =   $data->{'route'};
$latitude = $data->{'latitude'};
$longitude = $data->{'longitude'};


require 'connection.php';

// check whether route's table exist.
$results = $con->query ( "SHOW TABLES like 'bus' " ) or die ( mysqli_error () );

if (($results->num_rows) == 1) {
  //"UPDATE MyGuests SET lastname='Doe' WHERE id=2"
 $sql = "REPLACE INTO bus(bus_id, route, latitude, longitude)
          VALUES( ?, ?, ? , ? )"; 
  $stmt = $con->prepare($sql) or die ( $con->error );
  $stmt->bind_param("ssss",$bus_id,$route, $latitude,$longitude);
  $stmt->execute();

  $stmt->close();

  echo "Table exist";
} else {
  $create =  "CREATE TABLE bus
       (id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
        bus_id INT(11) NOT NULL UNIQUE,
        route int(11) NOT NULL,
     latitude FLOAT(10,6) NOT NULL , 
     longitude FLOAT(10,6) NOT NULL,
     created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)" ;
   $stmt = $con->prepare($create) or die ( $con->error );
  $stmt->execute();

  $stmt->close();

  echo "table was created";
}

有很多方法可以实现这一点,您可以尝试使用尽可能简单的日期
date(dmyhis)
这将始终为您提供唯一的值。这只是一种方法。@Hardy:但是日期(dmyhis)时间戳每秒钟都会改变,而且记录不能是唯一的?每一条总线都有它唯一的id?我的意思是它不再更新了?每个网络设备都有一个唯一的MAC地址。这是在创建guid时使用的,将MAC地址与时间戳一起散列。因此,每个具有网络连接的总线都已经有了唯一的标识符。这只是一个mac地址是否可用于应用程序的问题。我们认为您是在跟踪公交车,而不是乘客。@Hard:您是指时间戳为on秒一次,然后我必须将其转换为JSON字符串吗?我想是每秒钟的时间戳。