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