我如何先插入经度和纬度,然后在存在时更新它?我在代码中使用查询语句尝试了它,但是我收到此错误Parse error: syntax error, unexpected 'Table' (T_STRING) in C:\xampp\htdocs\bustracker\index.php on line 28
但是如果正在删除插入查询,我将获得输出Table exist
<?php
$json = '{"latitude":93.86898451,"longitude":40.66561387,"time":"27.04.2015 20:11:05","route":4}';
$data = json_decode ( $json );
$route = "route_" . $data->{'route'};
$latitude = $data->{'latitude'};
$longitude = $data->{'longitude'};
$recordingTime = $data->{'time'};
require 'connection.php';
// check whether route's table exist.
$results = $con->query ( "SHOW TABLES LIKE'" . $route . "'" ) or die ( mysqli_error () );
if (($results->num_rows) == 1) {
//The error is in this query.
$con->query ( "INSERT INTO ".$route."(latitude, longitude)
VALUES(".$latitude.", ".$longitude.")
ON DUPLICATE KEY UPDATE
latitude = ".$latitude.",
longitude = ".$longitude) or die ( $con->error );
echo "Table exist";
} else {
$con->query ( "CREATE TABLE " . $route . "
(id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
latitude FLOAT(10,6) NOT NULL,
longitude FLOAT(10,6) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)" ) or die ( $con->error );
echo "table was craeted";
}
?>
答案 0 :(得分:1)
以下是如何将预设声明与绑定占位符一起使用的示例。为了调试动态生成的SQL,通常有助于将生成的SQL文本分配给变量,然后将其用于显示以进行调试。
$route
在此示例中,我们需要确保$route
是有效的标识符;通过{{1}}的值,SQL注入的潜力很大。 (我们无法为标识符提供绑定占位符。)
根本不清楚插件是如何抛出一个重复的键&#34;例外;我们不知道哪些列被定义为PRIMARY KEY或UNIQUE KEY。
我们可以使用特殊的VALUES()函数在ON UPDATE中的表达式中引用INSERT的VALUES列表中的值,如上所示。我们不必提供&#34;纬度&#34;的多个副本。声明中的价值。