Как сохранить имя файла в базе данных, с другой информацией при загрузке изображения на сервер с помощью PHP?

Привет, я прочитал много форумов и веб-сайтов, которые рассказывают вам, как загрузить изображение на сервер, и мне удалось заставить это работать, я могу загрузить файл на мой сервер, но сохранение имени файла работает в следующем примере, который я нашел и мне также нужно создать форму, которая позволяет вводить больше данных в базу данных. Я застрял в этом, поскольку раньше делал много PHP. Я подошел к концу, пытаясь разучить различные веб-сайты без особых успехов, кто-нибудь может помочь мне! Мне нужно это сделать для проекта, который я делаю.

Я в основном пытаюсь создать CMS, которая позволяет пользователям загружать фотографию члена группы и хранить информацию о них, чтобы она могла отображаться на веб-странице для просмотра публикой.


Мой стол выглядит так:

Field Type Null Default id int(10) No nameMember varchar(25) No bandMember text No photo varchar(30) No aboutMember text No otherBands text No 

Форма, которую я хочу, будет выглядеть так:

  <h1>Adding a new Band Member or Affiliate</h1> <form method="post" action="addMember.php" enctype="multipart/form-data"> <p> Please Enter the Band Members Name. </p> <p> Band Member or Affiliates Name: </p> <input type="text" name="nameMember"/> <p> Please Enter the Band Members Position. Example:Drums. </p> <p> Member's Position: </p> <input type="text" name="bandMember"/> <p> Please Upload a Photo in gif or jpeg format. The file name should be named after the Members name. If the same file name is uploaded twice it will be overwritten! </p> <p> Photo: </p> <input type="file" name="filep" size=35 /> <p> Please Enter any other information about the band member here. </p> <p> Other Member Information: </p> <textarea rows="10" cols="35" name="aboutMember"> </textarea> <p> Please Enter any other Bands the Member has been in. </p> <p> Other Bands: </p> <input type="text" name="otherBands" size=30 /> <br/> <br/> <input TYPE="submit" title="Add data to the Database" value="Add Member"/> </form> 

Пример, который загружает изображение на сервер и только следующее:

 <? if ($_POST["action"] == "Load") { $folder = "images/"; move_uploaded_file($_FILES["filep"]["tmp_name"] , "$folder".$_FILES["filep"]["name"]); echo " <p align=center>File ".$_FILES["filep"]["name"]."loaded..."; $result = mysql_connect("localhost", "******", "*****") or die ("Could not save image name Error: " . mysql_error()); mysql_select_db("project") or die("Could not select database"); mysql_query("INSERT into dbProfiles (photo) VALUES('".$_FILES['filep']['name']."')"); if($result) { echo "Image name saved into database "; } } ?> 

И форму примеров, которую я должен использовать, такова:

 <form action=addMember.php method=post enctype="multipart/form-data"> <table border="0" cellspacing="0" align=center cellpadding="3" bordercolor="#cccccc"> <tr> <td>File:</td> <td><input type="file" name="filep" size=45></td> </tr> <tr> <td colspan=2><p align=center> <input type=submit name=action value="Load"> </td> </tr> </table> </form> 

PS: Файл изображений открыт для записи.

Solutions Collecting From Web of "Как сохранить имя файла в базе данных, с другой информацией при загрузке изображения на сервер с помощью PHP?"

Вот ответ для тех из вас, которые выглядели так, как я делал по всему Интернету, пытаясь выяснить, как это сделать. Загрузка фотографии на сервер с именем файла, хранящимся в базе данных mysql, и другими данными формы, которые вы хотите получить в своей базе данных. Пожалуйста, дайте мне знать, если это поможет.

Во-первых, вам нужна форма:

  <form method="post" action="addMember.php" enctype="multipart/form-data"> <p> Please Enter the Band Members Name. </p> <p> Band Member or Affiliates Name: </p> <input type="text" name="nameMember"/> <p> Please Enter the Band Members Position. Example:Drums. </p> <p> Band Position: </p> <input type="text" name="bandMember"/> <p> Please Upload a Photo of the Member in gif or jpeg format. The file name should be named after the Members name. If the same file name is uploaded twice it will be overwritten! Maxium size of File is 35kb. </p> <p> Photo: </p> <input type="hidden" name="size" value="350000"> <input type="file" name="photo"> <p> Please Enter any other information about the band member here. </p> <p> Other Member Information: </p> <textarea rows="10" cols="35" name="aboutMember"> </textarea> <p> Please Enter any other Bands the Member has been in. </p> <p> Other Bands: </p> <input type="text" name="otherBands" size=30 /> <br/> <br/> <input TYPE="submit" name="upload" title="Add data to the Database" value="Add Member"/> </form> 

Затем этот код обрабатывает данные из формы:

  <?php // This is the directory where images will be saved $target = "your directory"; $target = $target . basename( $_FILES['photo']['name']); // This gets all the other information from the form $name=$_POST['nameMember']; $bandMember=$_POST['bandMember']; $pic=($_FILES['photo']['name']); $about=$_POST['aboutMember']; $bands=$_POST['otherBands']; // Connects to your Database mysqli_connect("yourhost", "username", "password") or die(mysqli_error()) ; mysqli_select_db("dbName") or die(mysqli_error()) ; // Writes the information to the database mysqli_query("INSERT INTO tableName (nameMember,bandMember,photo,aboutMember,otherBands) VALUES ('$name', '$bandMember', '$pic', '$about', '$bands')") ; // Writes the photo to the server if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) { // Tells you if its all ok echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory"; } else { // Gives and error if its not echo "Sorry, there was a problem uploading your file."; } ?> 

Код отредактирован с http://www.about.com

У вас есть идентификатор для каждой фотографии, поэтому я предлагаю вам переименовать фотографию. Например, вы переименуете его по дате

 <?php $date = getdate(); $name .= $date[hours]; $name .= $date[minutes]; $name .= $date[seconds]; $name .= $date[year]; $name .= $date[mon]; $name .= $date[mday]; ?> 

обратите внимание: не забудьте расширение файла вашего файла или вы можете создать случайную строку для фотографии, но я бы не рекомендовал этого. Я также рекомендую вам проверить расширение файла, прежде чем загружать его в свой каталог.

 <?php if ((($_FILES["photo"]["type"] == "image/jpeg") || ($_FILES["photo"]["type"] == "image/pjpg")) && ($_FILES["photo"]["size"] < 100000000)) { move_uploaded_file($_FILES["photo"]["tmp_name"], $target.$name); if(mysql_query("your query")) { //success handling } else { //failed handling } } else { //error handling } ?> 

Надеюсь, это поможет.

 <form method="post" action="addMember.php" enctype="multipart/form-data"> <p> Please Enter the Band Members Name. </p> <p> Band Member or Affiliates Name: </p> <input type="text" name="nameMember"/> <p> Please Enter the Band Members Position. Example:Drums. </p> <p> Band Position: </p> <input type="text" name="bandMember"/> <p> Please Upload a Photo of the Member in gif or jpeg format. The file name should be named after the Members name. If the same file name is uploaded twice it will be overwritten! Maxium size of File is 35kb. </p> <p> Photo: </p> <input type="hidden" name="size" value="350000"> <input type="file" name="photo"> <p> Please Enter any other information about the band member here. </p> <p> Other Member Information: </p> <textarea rows="10" cols="35" name="aboutMember"> </textarea> <p> Please Enter any other Bands the Member has been in. </p> <p> Other Bands: </p> <input type="text" name="otherBands" size=30 /> <br/> <br/> <input TYPE="submit" name="upload" title="Add data to the Database" value="Add Member"/> </form> 

сохранить его как addMember.php

 <?php //This is the directory where images will be saved $target = "your directory"; $target = $target . basename( $_FILES['photo']['name']); //This gets all the other information from the form $name=$_POST['nameMember']; $bandMember=$_POST['bandMember']; $pic=($_FILES['photo']['name']); $about=$_POST['aboutMember']; $bands=$_POST['otherBands']; // Connects to your Database mysql_connect("yourhost", "username", "password") or die(mysql_error()) ; mysql_select_db("dbName") or die(mysql_error()) ; //Writes the information to the database mysql_query("INSERT INTO tableName (nameMember,bandMember,photo,aboutMember,otherBands) VALUES ('$name', '$bandMember', '$pic', '$about', '$bands')") ; //Writes the photo to the server if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) { //Tells you if its all ok echo "The file ". basename( $_FILES['photo']['name']). " has been uploaded, and your information has been added to the directory"; } else { //Gives and error if its not echo "Sorry, there was a problem uploading your file."; } ?> 

в приведенном выше коде одна небольшая ошибка, я исправил эту ошибку.

Если вы хотите ввести больше данных в форму, вы просто получите доступ к представленным данным через $ _POST.

Если у вас есть

 <input type="text" name="firstname" /> 

вы получаете доступ к нему

 $firstname = $_POST["firstname"]; 

Затем вы можете обновить строку запроса для чтения

 mysql_query("INSERT INTO dbProfiles (photo,firstname) VALUES('{$filename}','{$firstname}')"); 

Примечание. Всегда фильтруйте и дезинфицируйте свои данные.

Ваша роль:

 $result = mysql_connect("localhost", "******", "*****") or die ("Could not save image name Error: " . mysql_error()); mysql_select_db("project") or die("Could not select database"); mysql_query("INSERT into dbProfiles (photo) VALUES('".$_FILES['filep']['name']."')"); if($result) { echo "Image name saved into database "; 

Не имеет большого смысла, ваше соединение не должно называться $ result, но это проблема с именами, а не с кодировкой.

Проблема с кодировкой заключается в том, что если ($ result), ваше высказывание, если вы можете подключиться к базе данных, независимо от того, что запрос на вставку или неудача завершится, вы выведете «Изображение, сохраненное в базе данных».

Попробуйте добавить do

 $realresult = mysql_query("INSERT into dbProfiles (photo) VALUES('".$_FILES['filep']['name']."')"); 

и измените if ($ result) на $ realresult

Я подозреваю, что ваш запрос терпит неудачу, возможно, у вас есть дополнительные столбцы или что-то еще?

Попробуйте скопировать / вставить ваш запрос, заменив «. $ _ FILES ['filep'] ['name']." с проверкой и запуском его в браузере запросов и посмотреть, идет ли он.

Добавление следующего исключает проблемы с кавычками в именах файлов, например

 "freddy's pic.jpg" 

которые приемлемы для некоторых операционных систем.

До:

 $pic=($_FILES['photo']['name']); 

После:

 $pic=(mysql_real_escape_string($_FILES['photo']['name']));