我希望使用Javascript,Ajax和PHP更新SQLite数据库中的两个字段,其中标记的坐标放置在图像上。目前,当我发布数据时,我会收到一个'附近" WHERE":语法错误'在Chrome的控制台上。我已经读过其他具有相同/类似错误的Stack Overflow线程,但还没有找到我的问题的答案。
我的代码细分:
当一个圆形标记(div id#001)被拖放到图像上时(为了我的目的,一个地图),坐标记录在两个div中:#x_results和#y_results。代码的这一部分工作正常:
<script type="text/javascript">
var coordinates = function(element) {
element = $(element);
var top = element.position().top;
var left = element.position().left;
$('#x_results').text(left);
$('#y_results').text(top);
}
$( function () {
$("#001").draggable({
start: function() {
coordinates('#001');
},
stop: function() {
coordinates('#001');
}
});
} );
</script>
然后我通过单击按钮(#submit_node)将坐标发布到PHP脚本,使用以下代码:
<script type="text/javascript">
$(document).ready(function() {
$('#submit_node').click(function() {
var xcoords = $('#x_results').val();
var ycoords = $('#y_results').val();
$.ajax({
type: 'POST',
url: 'coords.php',
data: { x_coords: xcoords, y_coords: ycoords },
success: function(response) {
console.log(response);
}
});
});
});
</script>
我的PHP脚本(coords.php)的内容如下:
<?php
class MyDB extends SQLite3
{
function __construct()
{
$this->open('map_test.db');
}
}
$db = new MyDB();
if(!$db){
echo $db->lastErrorMsg();
} else {
echo "Opened database successfully\n";
}
$x_coords = $_POST["x_coords"];
$y_coords = $_POST["y_coords"];
$sql =<<<EOF
UPDATE Person SET marker_x = $x_coords WHERE id=1;
UPDATE Person SET marker_y = $y_coords WHERE id=1;
EOF;
$ret = $db->exec($sql);
if(!$ret){
echo $db->lastErrorMsg();
} else {
echo $db->changes(), "Record updated successfully\n";
}
$db->close();
?>
我几天来一直在苦苦挣扎,陷入了僵局。数据库文件是可写的,所有必需的文件都具有正确的权限和所有权(参考:https://serverfault.com/questions/357108/what-permissions-should-my-website-files-folders-have-on-a-linux-webserver)。我可以成功更新&#39; marker_x&#39;和&#39; marker_y&#39;通过命令行进行交互时数据库中的值:
sqlite> UPDATE Person SET marker_x = 31.17 WHERE id = 1;
sqlite> select * from Person;
1|001|Chris|22|Geek|On|lime|31.17|79.558
2|002|John|56|Architect|Error|orange|342.11|y
3|003|Philipa|22|Student|Off|red|342.11|y
4|004|Grant|34|Director|On|lime|342.11|y
我想将坐标值存储在SQLite数据库中,以便稍后可以使用它们来定位标记,从而实现持久性。
非常感谢任何帮助或指导。