#javascript #php #mysql
#язык JavaScript #php #mysql
Вопрос:
Поэтому я пробовал так много раз и пытался что-то изменить, но все равно ничего не получалось, он все равно добавлял и выбрасывал нуль вот код HTML, PHP, а также JS (просто в случае необходимости). Я уже пытался использовать некоторые методы на github и переполнение стека, но все еще не работает. Я надеюсь, что кто-нибудь сможет помочь мне с этим вопросом, я действительно ценю это, спасибо
lt;!-- 8 avatar/profile picture --gt; lt;div class="tab"gt; lt;div class="file-upload"gt; Profile Picture: lt;button class="file-upload-btn" type="button" onclick="$('.file-upload-input').trigger( 'click' )"gt;Select Picturelt;/buttongt; lt;p style="font-size: 10px;"gt;Please upload a decent photo, This will go under verification.lt;/pgt; lt;div class="image-upload-wrap"gt; lt;input id='avatar' class="file-upload-input" type='file' name="avatar" onchange="readURL(this);" accept=".png, .jpg, .jpeg" /gt; lt;div class="drag-text"gt; lt;h3gt;Upload a Photolt;/h3gt; lt;/divgt; lt;/divgt; lt;div class="file-upload-content"gt; lt;img class="file-upload-image" src="#" alt="your image" /gt; lt;div class="image-title-wrap"gt; lt;button type="button" onclick="removeUpload()" class="remove-image"gt;lt;i class="fas fa-trash-alt"gt;lt;/igt;lt;/buttongt; lt;br/gt; lt;/divgt; lt;/divgt; lt;script src="./assets/js/add_photo.js"gt;lt;/scriptgt; lt;/divgt; lt;/divgt;
//Profile Picture $avatar = $_FILES['avatar']['tmp_name']; $avatar_name = $_FILES['avatar']['name']; $xavatar = base64_encode(file_get_contents(addslashes($avatar))); //I did not include other data since it is unrelated to this topic $sql = "INSERT INTO users_tb(user_avatar)VALUES('$xavatar')"; $statement = $conn-gt;prepare($sql); $statement-gt;execute([ ':user_avatar' =gt; $xavatar ]);
//avatar function readURL(input) { if (input.files amp;amp; input.files[0]) { var areader = new FileReader(); areader.onload = function(e) { $('.image-upload-wrap').hide(); $('.file-upload-image').attr('src', e.target.result); $('.file-upload-content').show(); // lt;span class="image-title"gt;Uploaded Imagelt;/spangt; //$('.image-title').html(input.files[0].name); }; areader.readAsDataURL(input.files[0]); } else { removeUpload(); } } function removeUpload() { $('.file-upload-input').replaceWith($('.file-upload-input').clone()); $('.file-upload-content').hide(); $('.image-upload-wrap').show(); } $('.image-upload-wrap').bind('dragover', function () { $('.image-upload-wrap').addClass('image-dropping'); }); $('.image-upload-wrap').bind('dragleave', function () { $('.image-upload-wrap').removeClass('image-dropping'); });
Комментарии:
1. Вы создаете полную строку SQL без каких-либо параметров, но затем пытаетесь использовать ее с параметром, я не удивлюсь, если там будет выдана ошибка. У вас включены отчеты об ошибках PHP и MySQL?
2.
$sql = "INSERT INTO users_tb(user_avatar)VALUES('$xavatar')";
…похоже, вы неправильно поняли, как использовать подготовленные утверждения и параметры. У вас должна быть ошибка PDO с жалобой на то, что количество параметров не совпадает. Попробуйте$sql = "INSERT INTO users_tb(user_avatar)VALUES(:user_avatar)";
вместо этого, чтобы заполнитель был правильно заменен значением параметра из массива при выполнении запроса.3. P.S. Вышесказанное поможет, но ваше описание проблемы настолько расплывчато, что вполне могут возникнуть и другие проблемы. Неясно, выполнили ли вы какую — либо подробную отладку, чтобы попытаться сузить проблему-в основном это звучит так, как будто вы потратили время на то, чтобы попробовать всевозможные случайные (но неуказанные) материалы из любого места, которое вы можете найти в Интернете, казалось бы, ненаучным и бессистемным способом. Это не очень хороший подход к решению задач программирования.
4. Я просто нажал CTRL Z, и теперь все работает, и я не уверен, как это исправлено.
5. В любом случае, я просто последую второму комментарию. спасибо вам за совет!
Ответ №1:
попробуйте это : получите переменную $_FILE без функции base64encode ( вы должны использовать ее, когда берете ее из своей базы данных).
$avatar = file_get_contents($_FILES['avatar']['tmp_name']);
Удивлен, что нет никакой ошибки sql !? мне кажется, что так и должно быть :
$sql = "INSERT INTO users_tb(user_avatar)VALUES(:user_avatar)"; $statement = $conn-gt;prepare($sql); $statement-gt;execute([ ':user_avatar' =gt; $xavatar ]);
вы должны присвоить значение user_avatar только во время выполнения