靠近"在哪里"使用PHP POST到SQLite时出现语法错误

时间:2016-12-31 18:21:16

标签: javascript php jquery ajax sqlite

我希望使用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数据库中,以便稍后可以使用它们来定位标记,从而实现持久性。

非常感谢任何帮助或指导。

0 个答案:

没有答案