2015-08-21 3 views
2

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

  • Я также обеспечил, что я подключился к db и правильно включил все мои столбцы. Я не получаю никаких ошибок, данные просто не хранятся в базе данных.

    if(isset($_POST['pp_submit'])){ 
        session_start(); 
         $file = $_FILES['pp_file']['name']; 
         $ppf_type = $_FILES['pp_file']['type']; 
         $ppf_size = $_FILES['pp_file']['size']; 
         $ppf_tmpname = $_FILES['pp_file']['tmp_name']; 
         $ppf_err = $_FILES['pp_file']['error']; 
        $var = $_SESSION['id']; 
    
        if($ppf_err > 0){ header('Location: ../profile.php');} 
    
        move_uploaded_file($ppf_tmpname,"../uploaded/".$file); 
        mysql_query("INSERT INTO users (profile) VALUES ('$file') WHERE id = '$var'"); 
    
    
    if(mysql_affected_rows()>0){ 
    echo "Item added successfully.<br/>";} 
    else 
    { echo "Item addition failed.<br/>"; } 
    header("Location: ../profile.php?id=$var"); 
    } 
    

Мой вопрос: Почему не имя файла передается через базу данных?

  • Мне также любопытно, почему move_uploaded_file() работает, но не непосредственно под ним.
+3

'INSERT' с предложением' WHERE'? Вы создаете новую запись. Неужели вы имеете в виду «ОБНОВЛЕНИЕ»? –

+1

Проверьте 'mysql_error()' после выдачи запроса. Кроме того, функции 'mysql_' устарели. Изучите PDO или MySQLi и особенно подготовленные операторы. – Sirko

+3

Возможный дубликат [MySQL Insert Where query] (http://stackoverflow.com/questions/485039/mysql-insert-where-query) –

ответ

6

Это должно быть обновление запроса вместо запроса вставки:

mysql_query("UPDATE users SET profile = '$file' WHERE id = '$var'"); 

отметить также, что:

  • Вы используете устаревший API. Рассмотрите возможность переключения на функции mysqli_* или с помощью PDO.
  • Вы широко открыты для атак SQL-инъекций. Рассмотрите возможность использования подготовленных инструкций.
+0

Не волнуйтесь, я определенно еще не закончен. Что касается mysql_ *, будьте виноваты в веб-хостинге. Я также хотел бы знать, почему «INSERT» не работает в этом случае? Ранее поле было пустым. –

+0

'INSERT' вставляет новую запись,' UPDATE' обновляет существующую запись. Является ли поле пустым, не имеет значения. –

+1

Ahhh ok, поэтому новый экземпляр будет «INSERT», затем любые изменения (изменение данных) экземпляра после будут выполнены с помощью «UPDATE». –

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