发布请求数据未插入mysql

时间:2016-05-14 16:59:44

标签: php jquery mysql

我发布了以下帖子请求,似乎工作正常。当我查看网络下的开发人员工具时,一切似乎都有效,我可以看到每个参数都在发布。但是当执行insert.php时,没有任何内容添加到数据库中,我没有收到任何错误消息。我正在尝试将图像保存到mysql中的Blob中。

发布请求

var description = $('#description').val();
var title = $('#title').val();

var fileInput = $("#image")[0];
var file = fileInput.files[0];
var dataResult = new FormData();
dataResult.append('image', file);
dataResult.append('desc', description);
dataResult.append('title', title);
dataResult.append('longitude', currentMarker.lng());
dataResult.append('latitude', currentMarker.lat());

$.ajax({
  type: 'POST',
  url: 'insert.php',
  data: dataResult,
  processData: false,
  contentType: false,
        success: function (answer) {

        }
    })

insert.php

include('config.php');

if (isset($_POST['title']) && isset($_POST['body']) && isset($_POST['longitude']) && isset($_POST['latitude'])){
  $title = $_POST['title'];
  $body = $_POST['body'];
  $longitude = (float)$_POST['longitude'];
  $latitude = (float)$_POST['latitude'];
  $file = file_get_contents($_FILES['image']['name']);


  $strSQL = $db->query("INSERT INTO camps (title, body, longitude, latitude, image) VALUES ('$title',  '$body', '$longitude','$latitude', '$file')");


}

转储

array(4) {
  ["desc"]=>
  string(6) "teeest"
  ["title"]=>
  string(11) "test"
  ["longitude"]=>
  string(18) "-74.17870044708252"
  ["latitude"]=>
  string(17) "40.73480350827126"
}

1 个答案:

答案 0 :(得分:0)

这里有一些问题:

  1. 没有输出脚本,也没有任何错误处理,当您在answer变量中获得输出时,您不会对其执行任何操作。您至少应该将其转储到控制台以查看发生的情况。
  2. 您永远不会输入if区块,因为没有任何元素的密钥为body
  3. 您文件的路径不是$_FILES['image']['name'],而是$_FILES['image']['tmp_name']
  4. 你有一个SQL注入问题。您应该使用带有绑定变量的预准备语句,而不是直接在查询中注入变量。
  5. 可能还有更多,但是当您添加错误处理并使用脚本输出时,您至少可以看到错误的内容。

    除此之外,我建议您将文件存储为文件系统中的文件,然后只添加数据库的路径。