2014-01-09 3 views
2

Это моя формаЗагрузить изображение в файл и информацию базы данных MySQL

<h3>Add Image</h3> 
<form action="datauploadprocess.php" enctype="multipart/form-data" name="myForm" id="myForm" method="post"> 
Subject: <input name="subject" type="text" id="subject" /><br /> 
Content: <input name="content" type="text" id="content" /><br /> 
Image Name: <input name="imageName" type="text" id="imageName" /><br /> 

Upload Image (jpg only): 
<label> 
    <input type="file" name="fileField" id="fileField" /> 
</label> 
<label> 
    <input type="submit" name="button" id="button" value="Add Photo" /> 
</label> 
</form> 

и мой процесс ...

<?php include "header.php";?> 
<?php 
//Parser for Add Photo Form 
if (isset($_POST["subject"], $_POST["content"], $_POST["imageName"])){ 
$subject = mysqli_real_escape_string ($con, isset ($_POST["subject"])); 
$content = mysqli_real_escape_string ($con, isset ($_POST["content"])); 
$imageName = mysqli_real_escape_string ($con, isset ($_POST["imageName"])); 

//add photo to db 
$sql = mysqli_query($con, " 
      INSERT INTO 
      Blog (
      subject, 
      content, 
      imageName 
      )VALUES(
      '$subject', 
      '$content', 
      '$imageName')") 
      or die(mysqli_error($con)); 
$pid = mysqli_insert_id(); 
$newname = "$pid.jpg"; 
move_uploaded_file($_FILES['fileField']['tmp_name'],"blogPhotos/$newname"); 
header("location: datauploadprocess.php"); 
exit(); 
} 
?> 
<?php include"footer.php"?> 

Он работает без ошибок, но в базе данных значений для субъекта, содержимое и имя изображения отображаются как «1» каждый раз. Также изображение не добавляется в папку. Мое соединение включено в в правильном формате.

Отредактировано 15:45 Проблема с содержимым, содержимым и изображением теперь решена, но изображение по-прежнему не загружается в указанный файл. Новый код процесса;

//Parser for Add Photo Form 
if (isset($_POST["subject"], $_POST["content"], $_POST["imageName"])){ 
$subject = mysqli_real_escape_string ($con, ($_POST["subject"])); 
$content = mysqli_real_escape_string ($con, ($_POST["content"])); 
$imageName = mysqli_real_escape_string ($con, ($_POST["imageName"])); 

Update ... мне не хватает информации о подключении к линии

$pid = mysqli_insert_id(); 

Это должно быть

$pid = mysqli_insert_id($con); 

Все работает.

+0

Вы пытались распечатать var перед выполнением запроса, чтобы узнать, как это значение? – Goikiu

+2

«1» по дизайну, поскольку вы используете 'isset ($ _POST [" subject "])' вместо просто '$ _POST [" subject "]'? –

ответ

4

Должно быть, Удалить isset() и его результат является логическим

+1

Небольшой аддон: чтобы проверить, не пустое поле post, используйте оператор '?:': '$ Subject = mysqli_real_escape_string ($ con, isset ($ _ POST [" subject "])? $ _ POST [" subject "]: '') ' – Nicolai

+0

Это решило проблему его загрузки значений '1' в базу данных, спасибо! Он по-прежнему не будет загружать фотографию, какие-либо идеи по этому поводу? – Sprose

+0

Убедитесь, что 'upload path' верны? и его разрешения –

1
$subject = mysqli_real_escape_string ($con, isset ($_POST["subject"])); 

Иссета() в этой строке вернет true/false. Она возвращает истину, которая затем интерпретируется как 1.

Снимите Исеть() внутри ваших функций побега, вы хотите, чтобы избежать значения, а не результат Исеть()

Смежные вопросы