Ответ 1
Как правильно указывают @Sjoerd и @zerkms, вам не нужно это делать - для хранения необработанных двоичных данных используется столбец blob, поэтому вы можете обойти процесс Base64 и вставить необработанные данные файла.
Если вы хотите хранить изображения в базе данных (что, кстати, мне лично не нравится делать), лучше хранить необработанные данные - кодировка Base64, делает данные больше, и означает, что она должна декодироваться до визуализации изображения, что добавляет дополнительные служебные данные.
Вот как вы можете вставлять необработанные двоичные данные (предполагая расширение MySQL):
$data = file_get_contents($_FILES['name_of_control']['tmp_name']);
$data = mysql_real_escape_string($data);
$query = "
INSERT INTO table
(`blob_column`)
VALUES
('$data')
";
mysql_query($query);
Если вы действительно хотите, чтобы Base64 закодировал его (в этом случае его можно было просто сохранить в varchar), просто добавьте вызов base64_encode()
:
$data = file_get_contents($_FILES['name_of_control']['tmp_name']);
$data = base64_encode($data);
// There is an argument that this is unnecessary with base64 encoded data, but
// better safe than sorry :)
$data = mysql_real_escape_string($data);
$query = "
INSERT INTO table
(`varchar_column`)
VALUES
('$data')
";
mysql_query($query);