|
|
|
| Файлы хранятся в базе данных MySQL
При выводе из базы данных пользователю через ПХП - все в порядке выводим заголовки и файл.
А теперь мне нужно записать файл.
1. Создаю пустой файл music.mp3
2. Записываю в него соержымое поля blob.
- получается файл, нужного размера все ок, только не читается плеерами !
Почему? да при записи в базу данных исп mysql_escape_string(); а как обратно?
$aq = mysql_query("SELECT * FROM `blob_files` WHERE `id`='$key' LIMIT 1;");
$af = mysql_fetch_array($aq);
$fname = $sf[filename]; $fname = "./temp/$ssid/$fname";
$f = fopen($fname, "w");
fwrite($f, $af[file]); // поле file - содержымое blob
fclose($f);
|
| |
|
|
|
|
|
|
|
для: toproot
(10.07.2010 в 12:47)
| | http://softtime.ru/forum/read.php?id_forum=3&id_theme=74634&page=2
Зачем держать файлы в базе?
file - зарезервированное слово, и читать в коде $af[file] - крышу сносит. И вообще, из мануала:
$foo[bar] = 'enemy';
echo $foo[bar];
|
Это неправильно, но работает. Тогда почему неправильно? Суть в том, что этот код содержит неопределённую константу (bar), а не строку 'bar' (обратите внимание на кавычки). Это работает, поскольку неопределённая константа конвертируется в строку с тем же именем.
Это работает, поскольку bar, по причине своего синтаксиса, ожидается как константное выражение. Однако в этом случае константа с именем bar не существует. PHP теперь принимает, что вы обозначили bar литерально как строку "bar", но что вы забыли указать кавычки.
Так почему же это неправильно?
Когда-нибудь в будущем команда PHP может добавить другую константу или ключевое слово, и у вас появятся проблемы. Например, вы уже не можете использовать слова empty и default таким способом, поскольку они являются зарезервированными ключевыми словами. | |
|
|
|