javascript - 上传到数据库时,反斜杠将从 JSON 字符串中删除

标签 javascript php sql

我有一个 JSON 对象,我已使用 JavaScript 中的 JSON.stringify() 方法将其转换为 JSON 字符串。然后,我使用 AJAX 发布到 PHP 文件将其插入数据库。

     $("#saveToDatabase").click(function(){
   var place = searchBox.getPlaces();
   var locationJson = JSON.stringify(place[0]);

   $.ajax({
    type: "POST",
    url: "insertLocation.php",
    dataType:"json",
    ContentType:"application/json",
    data:  {
      locationJson : locationJson
  },
    cache: false,
    success: function(result){
     window.alert("successful upload!");
    }});
  });
}

    <?php
require_once("connection.php");



if(isset($_POST["locationJson"])){

    $locationJson = $_POST['locationJson'];

$query ="INSERT INTO Locations (json) VALUES ('$locationJson')";
        $statement = $pdo ->prepare($query);
        $statement->execute();

}

?>

我遇到的问题是,在上传数据时,反斜杠“\”将从我的 JSON 字符串中删除。因此,当我从数据库中选择它们并尝试在 JavaScript 中再次操作它们时,它们不再是有效的 JSON 对象。

我正在使用 SQL 上传到 PHPmyAdmin。

有人知道解决这个问题的方法吗?我需要将 JSON 字符串存储在数据库中而不会使它们失效。

干杯!

最佳答案

使用参数化查询而不是将变量替换到字符串中。

$query ="INSERT INTO Locations (json) VALUES (:json)";
$statement = $pdo ->prepare($query);
$statement->bindParam(':json', $locationJson);
$statement->execute();

参见How can I prevent SQL injection in PHP?解释为什么将变量替换到 SQL 查询中是一个坏主意,即使您使用像 addslashes() 这样的函数来尝试转义它们。

关于javascript - 上传到数据库时,反斜杠将从 JSON 字符串中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50768044/

相关文章:

php - 我的 PHP 代码为呈现的下一个 html 页面运行,而不是为当前页面运行

php - 具有许多连接的 Mysql 查询需要很长时间才能加载

sql - 为 SQL Server 表选择最佳索引

sql - 在 MySQL 中有 1 个大表还是 2 个小表更好?

c# - Asp.net 用户登录计数和 LastLogin

c# - 每次访问更改背景图像

javascript - JS 中判断一个数是否为回文数

php - 如何从一个数组中的数据库中获取多个列?

javascript - 自定义 Intl.Collat​​ors?

javascript - 如何获取子节点的父节点