带有 formdata 的值可以是文本数据类型吗?

Can the value with formdata be a text datatype?

我使用 formData 将数据上传到服务器,并将正文数据作为文本数据类型保存在数据库中。我发现当有像这样的标点符号时: ' - " etc. 作为 formData 中的值它给出了这个错误: SyntaxError: Unexpected token < in JSON at position 0. 当主体包含逗号和点,它可以工作,但不能与其他标点符号一起使用。FormData 文档说该值被转换为字符串,因此我的问题是,这个字符串可以转换为文本数据类型吗?我认为这应该与标点符号一起使用。或者是还有其他方法可以让 formData 值如上所述使用标点符号吗?我的代码:

let formData = new FormData();
formData.append("image", {uri: this.state.ImageSource.uri, name: 'image.jpg', type: 'image/jpeg'});
formData.append('video', this.state.video);
formData.append('title', this.state.title);
formData.append('body', this.state.body);
formData.append('categories', this.state.category);

let data = {
    method: 'POST',
    headers: {
        "Content-Type": "multipart/form-data",
    },
    body: formData
};

const response = await fetch(fetchUrlPhp, data);

这是我在服务器端收到的错误:

Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'blog', '2019-12-24')' at line 1 in D:\XAMPP\htdocs\own_website\portfolio\handle_post.php:69

这是哪个query/line:

$query = $connect->query("insert into posts ( image, video, title, body, categories, postDate ) VALUES('$target_dir', '$video', '$title', '$body', '$categories', '$date')");

根据@Barmar 的评论,我解决了这个问题。

The problem is that you have an unescaped quote in one of the variables.

特此回答,只需要在我的 php 代码中做一些调整:

// From
$query = $connect->query("insert into posts ( image, video, title, body, categories, postDate ) VALUES('$target_dir', '$video', '$title', '$body', '$categories', '$date')");

// To
$sql = "INSERT INTO posts(image, video, title, body, categories, postDate) VALUES(:image, :video, :title, :body, :categories, :postDate)";
$query = $connect->prepare($sql);
$query->execute(array(':image' => $target_dir, ':video' => $video, ':title' => $title, ':body' => $body, ':categories' => $categories, ':postDate' => $date));

回答我自己的问题:带有 formdata 的值可以是文本数据类型吗?这是一个接近等于文本的字符串,但最终标点符号不会成为 formdata 语法的问题。它对我不起作用的原因是服务器端的代码。