Denisov80
@Denisov80
Юный Программист

Почему MySQL не правильно сохраняет файл?

Скажите почему MySQL не правильно сохраняет файл в Базу Данных?
Проверяется Переменная color в массиве POST, если color == 'red' , то вызывается подпрограмма linux, и возвращается ответ (100 байт), этот файл Правильный (var_dump показывает верные значения, даже сохраняю в файл на диске и потом проверяю - все отлично)
Но в Базу записывается на Один байт меньше (из середины примерно вырезан 1 байт).
Если этот же файл (который был сохранен на диске) отправляю отдельно в Web форме, то в базу он записывается Верно, через код в секции else

if($_POST["color"] == "red"){   // если color == red,  генерирую файл с помощью подпрограммы
			exec( 'include/getColor'.'  '."red",  $output);  // вызываю подпрограмму, Результат в $output
			var_dump($output);     //вывод правильный
			$color = hex2bin($output[0]);  //  преобразую в HEX байты
			var_dump($color);      //вывод правильный
			file_put_contents("red",$color);    // Сохраненный файл Правильный
		}
     // иначе принимаю файл через браузер в переменную color	
   else{
       $color = addslashes(file_get_contents($_FILES['userfile']['tmp_name']));
          }

// записываю данные в таблицу
$insertQuery = "INSERT INTO ".$this->table." (username, colour) 
			VALUES (
			'".$_POST["username"]."',
			'".$color."'	
			)";
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ответы на вопрос 2
dimonchik2013
@dimonchik2013
non progredi est regredi
один байт - один символ

перевод строки вырезается?
Ответ написан
Daemon23RUS
@Daemon23RUS
if($_POST["color"] == "red"){   // если color == red,  генерирую файл с помощью подпрограммы
      exec( 'include/getColor'.'  '."red",  $output);  // вызываю подпрограмму, Результат в $output
      var_dump($output);     //вывод правильный
      $color = hex2bin($output[0]);  //  преобразую в HEX байты
      var_dump($color);      //вывод правильный
      file_put_contents("red",$color);    // Сохраненный файл Правильный
    }
     // иначе принимаю файл через браузер в переменную color	
   else{
       $color = file_get_contents($_FILES['userfile']['tmp_name']);
          }

// записываю данные в таблицу
$sql_color=addslashes($color);
$insertQuery = "INSERT INTO ".$this->table." (username, colour) 
      VALUES (
      '".$_POST["username"]."',
      '".$sql_color."'	
      )";


А вообще ... VALUES ( '".$_POST["username"]."', .... Жуткое зло, за такое бьют по рукам. И желающих стукнуть предостаточно (SQL инъекция)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы