Двойная пустая строка, введенная в MySQL при загрузке файла - PullRequest
0 голосов
/ 24 июня 2011

В течение нескольких дней я боролся за то, чтобы получить рабочую загрузку в админку моего сайта, и я почти на месте ...! В моей базе данных есть таблица с четырьмя полями - id (int), title (varchar), desc (varchar) и photo (varchar) - поле фотографии представляет источник изображения на сервере. Мой код:

<?php include 'dbc.php'; page_protect();

if(!checkAdmin()) {header("Location: login.php");
exit();
}

$host  = $_SERVER['HTTP_HOST'];
$host_upper = strtoupper($host);
$login_path = @ereg_replace('admin','',dirname($_SERVER['PHP_SELF']));
$path   = rtrim($login_path, '/\\');

foreach($_GET as $key => $value) {
    $get[$key] = filter($value);
}

foreach($_POST as $key => $value) {
    $post[$key] = filter($value);
}   
?>

<?php 

$target = "images/test/"; 
$target = $target . basename( $_FILES['photo']['name']); 

$title = mysql_real_escape_string($_POST['title']); 
$desc = mysql_real_escape_string($_POST['desc']);  
$pic = "images/test/" .(mysql_real_escape_string($_FILES['photo']['name']));

mysql_query("INSERT INTO `test` (`title`, `desc`, `photo`) VALUES ('$title', '$desc', '$pic')") ;

if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) 
 { 

echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory"; 
 } 
 else { 
 echo "Sorry, there was a problem uploading your file."; 
 } 
 ?> 

<form enctype="multipart/form-data" action="uploader.php" method="POST"> 
Title: <input type="text" name="title"><br> 
Description: <input type="text" name = "desc"><br>  
Photo: <input type="file" name="photo"><br> 
<input type="submit" value="Add"> 
</form>

По какой-то причине, когда строка вводится в mysql, вставляется повторяющаяся пустая строка, поэтому таблица выглядит следующим образом:

ID              Title                Desc                   Photo 
15                                                          images/test/
16              test title           test description       images/test/test1.jpg

Есть ли какая-то причина, по которой это происходит из приведенного выше кода - это довольно элементарно, но, учитывая боль и усилия, предпринятые для того, чтобы заставить это работать, я действительно не могу начать снова !!!

Заранее спасибо за любую помощь.

JD

1 Ответ

1 голос
/ 24 июня 2011

Насколько я вижу, код вашей базы данных выполняется, когда форма загружается впервые, но файл еще не загружен.Так что вам нужно будет переместить связанный с вашей базой код внутри

if(move_uploaded_file($_FILES['photo']['tmp_name'], $target))

Весь код:

<?php include 'dbc.php'; page_protect();

if(!checkAdmin()) {header("Location: login.php");
exit();
}

$host  = $_SERVER['HTTP_HOST'];
$host_upper = strtoupper($host);
$login_path = @ereg_replace('admin','',dirname($_SERVER['PHP_SELF']));
$path   = rtrim($login_path, '/\\');

foreach($_GET as $key => $value) {
    $get[$key] = filter($value);
}

foreach($_POST as $key => $value) {
    $post[$key] = filter($value);
}   
?>

<?php 
if($_FILES['photo']) //check if we uploading a file
{
    $target = "images/test/"; 
    $target = $target . basename( $_FILES['photo']['name']); 

    $title = mysql_real_escape_string($_POST['title']); 
    $desc = mysql_real_escape_string($_POST['desc']);  
    $pic = "images/test/" .(mysql_real_escape_string($_FILES['photo']['name']));
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) 
{
    mysql_query("INSERT INTO `test` (`title`, `desc`, `photo`) VALUES ('$title', '$desc', '$pic')") ;     

    echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory"; 
} 
else 
{ 
    echo "Sorry, there was a problem uploading your file."; 
    var_dump($_FILES); //for debug purposes
}
} 
?> 

<form enctype="multipart/form-data" action="uploader.php" method="POST"> 
Title: <input type="text" name="title"><br> 
Description: <input type="text" name = "desc"><br>  
Photo: <input type="file" name="photo"><br> 
<input type="submit" value="Add"> 
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...