2013-11-23 3 views
-1

Я написал код загрузки файла, который автоматически создает папку для хранения файлов. Теперь я хочу сохранить каждое имя файла в определенной таблице. Btw, таблица имеет столбец автоинкремента для идентификатора файла и img_link для самого имени файла. Это код, который я написал.Сохраните имя файла в таблице Mysql

<?php 
session_start(); 
$table_name = $_SESSION['un']; 
if (!is_dir($table_name)) { 
    mkdir($table_name); 
} 
$dir = $table_name . '/'; 
if (isset($_FILES["myfile"])) { 
    $ret = array(); 
    $error = $_FILES["myfile"]["error"]; 
    { 
     if (!is_array($_FILES["myfile"]['name'])) { 
      $fileName = $_FILES["myfile"]["name"]; 
      move_uploaded_file($_FILES["myfile"]["tmp_name"], $dir . $_FILES["myfile"]["name"]); 
      $ret[$fileName] = $dir . $fileName; 
     } else { 
      $fileCount = count($_FILES["myfile"]['name']); 
      $connect = mysql_connect("localhost", "root", "") or die(mysql_error()); 
      mysql_select_db("mdrusr") or die(mysql_error()); 
      for ($i = 0; $i < $fileCount; $i++) { 
       $fileName = $_FILES["myfile"]["name"][$i]; 
       echo $_FILES["myfile"]["name"][$i]; 
       $ret[$fileName] = $dir . $fileName; 
       move_uploaded_file($_FILES["myfile"]["tmp_name"][$i], $dir . $fileName); 
       mysql_query("INSERT INTO $table_name (img_link) VALUES ('$fileName')", $connect); 
      } 

     } 
    } 
    echo json_encode($ret); 
} 
?> 

но часть mysql_query не работает.

+1

«Не работает» здесь не поможет. Какая именно ошибка вы получаете? Что говорят файлы журнала ошибок HTTP-сервера? Что происходит? Мы не можем помочь, если вы не указали детали ... – arkascha

+1

И прекратите использовать старое и долгое устаревшее расширение mysql. Вместо этого используйте один из новых, рекомендуемых расширений. – arkascha

+0

echo "INSERT INTO $ table_name (img_link) VALUES ('$ fileName')"; проверьте соединение – SHIN

ответ

1

Вызов функции, кажется неправильным

mysql_query($connect, "INSERT INTO $table_name SET img_link='$fileName'"); 

$ подключения выходит первый

также не уверен, что ваш запрос был действительным SQL

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

Наконец настоятельно Рекомендуемые использовать MySQLi вместо MySQL набор функций PHP (MySQL из них являются устаревшими)

и

использование подготовленных операторов вместо инъекционного переменных контента непосредственно в запросах ,

Например: что происходит, если имя файла содержит одну цитату? Например

data.txt Йенни

Запрос получает облажался.

Так делать вещи в правильном порядке:

$connect = mysqli_connect("localhost", "root", "", "mdrusr"); // what about a password? 
                   // note the db selection 

if(!$connect) {...} 

$query = $connect->prepare("INSERT INTO ? SET img_link=?"); 
if(!$query) {...} 

$query->bind_param("ss", $table_name, $fileName); 

$query->execute(); 

$query->close(); 

/* .... */ 

$connect->close(); 
+1

+1 для фактического чтения кода спагетти OP. –

+0

Спасибо Денису, но поскольку OP жаловался на код db, я просто посмотрел на эту единственную строку ... – Paolo

+0

это действительно? 'INSERT INTO? SET img_link =? '.... Я никогда раньше не видел инструкции вставки. Код OP говорит '' INSERT INTO $ table_name (img_link) VALUES ('$ fileName') "', что довольно корректно, если таблица существует и имя файла экранировано правильно. –

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