Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 近;其中;使用PHP发布到SQLite时出现语法错误_Javascript_Php_Jquery_Ajax_Sqlite - Fatal编程技术网

Javascript 近;其中;使用PHP发布到SQLite时出现语法错误

Javascript 近;其中;使用PHP发布到SQLite时出现语法错误,javascript,php,jquery,ajax,sqlite,Javascript,Php,Jquery,Ajax,Sqlite,我希望使用Javascript、Ajax和PHP,使用放置在图像上的标记的坐标来更新SQLite数据库中的两个字段。目前,当我发布数据时,我在Chrome的控制台上收到一个“near”WHERE:“syntax error”。我读过其他具有相同/类似错误的堆栈溢出线程,但尚未找到问题的答案 我的代码分类: 将圆形标记(div id#001)拖放到图像(为了我的目的,是地图)上时,坐标记录在两个div中:#x#u结果和#y#u结果。代码的这一部分工作正常: <script type="tex

我希望使用Javascript、Ajax和PHP,使用放置在图像上的标记的坐标来更新SQLite数据库中的两个字段。目前,当我发布数据时,我在Chrome的控制台上收到一个“near”WHERE:“syntax error”。我读过其他具有相同/类似错误的堆栈溢出线程,但尚未找到问题的答案

我的代码分类:

将圆形标记(div id#001)拖放到图像(为了我的目的,是地图)上时,坐标记录在两个div中:#x#u结果和#y#u结果。代码的这一部分工作正常:

<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>
我希望将坐标值存储在SQLite数据库中,以便以后可以使用它们定位标记,从而实现持久性


非常感谢您提供的任何帮助或指导。

您的代码似乎对SQL注入非常开放。使用准备好的语句插入
$\u POST
中的数据,您可能希望首先清理数据。为什么要使用两个update语句<代码>更新个人设置标记\u x=$x\u coords,标记\u y=$y\u coords,其中id=1也将其参数化。您需要检查这些坐标参数的实际值。发生SQL错误是因为X或Y值(或者可能两者)不是有效的SQL语法。感谢您的回复!我将数据库中的坐标字段更改为float,然后设置“$x_coords=(float)$x_coords;”。我对$y_coords做了同样的操作,然后数据库成功更新。我还在ajax文章中添加了数据类型作为“html”@4卡斯特,谢谢你的建议。我将开始阅读有关清理数据和使用准备好的语句的内容。这是我的第一个编码项目,所以我还有很多东西要学。非常感谢您的时间。看起来您的代码对SQL注入非常开放。使用准备好的语句插入
$\u POST
中的数据,您可能希望首先清理数据。为什么要使用两个update语句<代码>更新个人设置标记\u x=$x\u coords,标记\u y=$y\u coords,其中id=1也将其参数化。您需要检查这些坐标参数的实际值。发生SQL错误是因为X或Y值(或者可能两者)不是有效的SQL语法。感谢您的回复!我将数据库中的坐标字段更改为float,然后设置“$x_coords=(float)$x_coords;”。我对$y_coords做了同样的操作,然后数据库成功更新。我还在ajax文章中添加了数据类型作为“html”@4卡斯特,谢谢你的建议。我将开始阅读有关清理数据和使用准备好的语句的内容。这是我的第一个编码项目,所以我还有很多东西要学。谢谢你抽出时间。
<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
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();
?>
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