2013-09-27 4 views
0

Я пытаюсь обновить изображения в моей папке загрузки и в базе данных mysql, загружая файлы, давая имя файла 0.jpg вместо обычных лиц id 13.jpg и не обновляясь в mysql database, вот мой фрагмент ниже того, что я делаю неправильно?Обновление изображения в папке загрузки и пути изображения в mysql

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



    //This gets all the other information from the form 

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

    $file = $_FILES['photo']['name']; // Get the name of the file (including file extension). 
    $ext = substr($file, strpos($file,'.'), strlen($file)-1); 
    if(!in_array($ext,$allowed_filetypes))//check if file type is allowed 
     die('The file extension you attempted to upload is not allowed.'); //not allowed 
    if(filesize($_FILES['photo']['tmp_name']) > $max_filesize) //check that filesize is less than 50MB 
     die ('The file you attempted to upload is too large, compress it below 50MB.'); 


    // Connects to your Database 
    mysql_connect("localhost", "root", "") or die(mysql_error()) ; 
    mysql_select_db("office") or die(mysql_error()) ; 

    //Writes the information to the 



    $target = "images/" .mysql_insert_id() . $ext; 

    $staff_id = mysql_insert_id(); 
    $new_file_name = mysql_insert_id() . $ext; 


    //I removed ,photo='$target' to display only id as picture name 
    mysql_query("UPDATE development SET photo='$new_file_name' WHERE staff_id=$staff_id"); 


//Writes the file 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."; 
} 
?> 
+4

вы вызываете 'mysql_insert_id()', не делая никакой вставки, поэтому вы возвращаете логическое значение false/0. –

ответ

0

Вместо этого

$staff_id = mysql_insert_id(); $new_file_name = mysql_insert_id() . $ext;

//I removed ,photo='$target' to display only id as picture name mysql_query("UPDATE development SET photo='$new_file_name' WHERE staff_id=$staff_id");

сделать что-то подобное, таким образом,

mysql_query ("INSERT INTO development (photo) VALUES ('".$new_file_name."')");  
//first insert 
$staff_id = mysql_insert_id() ;  
// then get the id of the record you've just inserted 
+0

Осторожно. разработка может не быть таблицей пользователей/лиц. Если это не так, вы получите первичный ключ разработки вместо пользователя. –

+0

и, вероятно, вся архитектура ошибочна. –

+0

и, вероятно, вся архитектура неправильная. Думаю, вам нужна таблица загруженных файлов и таблица людей (сотрудников). Каждый пользователь может загружать много изображений. Итак, сначала нужно вставить новое изображение в таблицу изображений вместе с идентификатором пользователя, который его загрузил (для получения этого идентификатора пользователя вам может понадобиться другой запрос или у вас есть его в сеансе). Затем вы получаете идентификатор только что загруженного изображения и делаете все, что вам нужно с ним, например, храните его в таблице пользователей, если у вас есть что-то вроде поля «последнее отправленное изображение». –

0

Во-первых, вы используете mysql_ * функц ионы, которые устарели от 5.5.

Во-вторых, вам нужно посмотреть страницу руководства для mysql_insert_id. Сообщений:

Получает идентификатор, сгенерированный для столбца AUTO_INCREMENT по предыдущего запроса (как правило, вставка).

Это означает, что вы можете вызвать mysql_insert_id() ПОСЛЕ того, как вы вставили данные или обновили таблицу своих пользователей/лиц. В вашем случае, однако, кажется, что у вас уже есть идентификатор человека, хранящегося в переменной $staff_id, поэтому вам, вероятно, даже не нужно использовать mysql_insert_id. Не будет ли это работать?

$target = "images/" . $staff_id . $ext; 
+0

Я пробовал ваше решение, но оно дает мне Примечание: Неопределенная переменная: staff_id – user2821383

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