Редактировать: Мой Ajax для отправки данных изображения это
var Image = $('#PostSection').find('input[name="Image2"]').val();
var fd = new FormData();
var files = $('#Image2')[0].files[0];
console.log(files);
fd.append('Image',files);
fd.append('username',username);
fd.append('posts',posts);
fd.append('backText3',backText3);
fd.append('poll',poll);
fd.append('option1',option1);
fd.append('option2',option2);
fd.append('option3',option3);
fd.append('option4',option4);
$.ajax({
url: '../Admin/Posts/Post.php',
type: 'post',
data: fd,
contentType: false,
processData: false,
success: function() {
$('#AllPosts').prepend($('<div>').load(location.href + "
#AllPosts>*"));
$('#PostSection')[0].reset();
var x = document.getElementById("snackbar2");
x.className = "snackbar show";
setTimeout(function(){ x.className = x.className.replace("show", ""); },
3000);
Имейте в виду, я показываю только переменные для изображения, поскольку это относится к моему вопросу. Мне не нужно сообщать о коде для имени пользователя, сообщений, опросов и т. Д. Это не имеет отношения к моему вопросу.
Мое изображение получается так
$tmpName = $_FILES['Image']['tmp_name'];
$fp = fopen($tmpName, 'r');
$Image = fread($fp, filesize($tmpName));
$Image = addslashes($Image);
fclose($fp);
и мой код вставки такой
$stmt = $conn3->prepare("INSERT INTO `$Username` (Username,RepostedBy,RepostedId,Texts,Img,backText,Dates,TimeUploaded,EditedVersion,Likes,Repost,Tags,Poll)
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)");
$stmt->bind_param("ssssbssssssss",$Username,$RepostedBy,$RepostedId,$Texts,$Image,$BackText,$Date,$Time,$EditedVersion,$Likes,$Shares,$Tags,$Poll);
По какой-то причине это не работает. Моя колонка для моих изображений - longblob. Все остальное вставлено, но изображение почему-то вставлено неправильно. Файл вставляется, но это не изображение. Пожалуйста, обратите внимание , прежде чем комментировать, как я уже говорил, все вставлено как следует, за исключением того, что изображение вставлено неправильно. Мне не нужны никакие ответы, спрашивающие меня о моем соединении с моей базой данных или о том, что любая из моих переменных равна нулю. Спасибо!
Вставляемые файлы являются изображениями, и в моей базе данных для некоторых из них указано 129 Кбайт, когда изображение не должно быть настолько большим в хранилище. Я попробовал непрофессиональный способ сделать это
$sql = "INSERT INTO `$Username` (Username,RepostedBy,RepostedId,Texts,Img,backText,Dates,TimeUploaded,EditedVersion,Likes,Repost,Tags,Poll)
VALUES ('$Username','$RepostedBy','$RepostedId','$Texts','$Image','$BackText','$Date','$Time','$EditedVersion','$Likes','$Shares','$Tags','$Poll');";
и это работает, но это не готовое утверждение, поэтому оно не является идеальным или профессиональным, потому что я не хочу делать инъекции SQL.