|
|
|
|
|
|
|
|
|
| Главная | Учебник | Статьи | FAQ | Книги | Ссылки |
Если есть возможность, то запустите mysqld с опцией: --default-character-set=cp1251" , если нет, то попробуйте послать MySQL такой запрос: SET CHARACTER SET cp1251_koi8 - это изменит набор символов для текущего соединения. SET CHARACTER SET DEFAULT - установит обычную таблицу символов.
Имейте ввиду, что эта настройка действует только для текущего соединения. Более подробно в RTFM.
Для правильной работы ORDER BY и GROUP BY сервер MySQL должен знать текущий набор символов. К сожалению, версии 3.х и 4.х MySQL могут иметь только _один_ charset на все базы одновременно. Задается в /etc/my.cnf:
[mysqld] default-character-set=koi8_ru
Проверить можно так:
mysql> show variables like 'character_sets' ; mysql> show variables like 'character_set' ;
В этом случае все символьные поля во всех таблицах будут храниться в KOI8-R. Для того, чтобы работали клиенты ODBC из под Windows необходимо, чтобы первым SQL оператором в Windows-приложении была команда:
SET CHARACTER SET cp1251_koi8 ;
Тогда включится перекодировка "на лету". На сервере будет KOI8-R, а на клиенте Windows-1251 и все сортировки будут работать. Эту же команду можно прописать в MyODBC 3.5х "SQL command on connect" (STMT=), она выполнится автоматически.
Другой вариант -- не использовать KOI8-R, а хранить базы в Windows-1251 и сообщить об этом серверу, прописав в /etc/my.cnf:
[mysqld] default-character-set=cp1251
Рекомендую http://www.webmasterbase.com/subcats/6 (Migrate your site from MySQL to PostgreSQL - Part 1, Migrate your site from MySQL to PostgreSQL - Part 2) Vova Rusakevich, 2:454/23.501
Для MySQL
Есть замечательная функция mysql_insert_id ([идент. соединения]).
Возвращает целое значение, которое и есть необходимый идентификатор, сгенерированный полем AUTO_INCREMENT в последем операторе INSERT.
Подробно см. в доках по функциям PHP.
Следует обратить внимание на то, что mysql_insert_id получает число типа INT, поэтому необходимо быть осторожным при использовании этой функции с полями типа BIGINT.
Для MSSQL
Нужно сразу после insert выполнить запрос 'select @@IDENTITY newID from Твоя_Таблица'. Получишь идентификатор для только что вставленной записи.
Подробнее о переменных см. в доках MS SQL.
Для MSSQL
Просто использовать функции mssql_* не получится, но можно использовать odbc_*
Для ODBC
Должен быть создан так называемый System DSN в ODBC Admin
Вызов: getfoto.php?id=13
<?
$sql = odbc_connect("namedsn", "user", "password") or die('die message');
$query = odbc_exec($sql, "select FOTOFIELD from FOTOTABLE where ID=$id");
if ($fetched = odbc_fetch_row($query)) {
$dbimage = odbc_result($query, "FOTO");
}
else
{
$filename = "./none.jpg"; // Пустая картинка
$fd = fopen ($filename, "rb");
$dbimage = fread ($fd, filesize ($filename));
fclose ($fd);
}
header('Content-type: image/jpeg');
//header('Content-Disposition: attachment; filename='.$id.'.jpg');
print $dbimage;
flush();
odbc_close($sql);
?>
Выбор базы данных (SQL-сервера) зависит от задач, которые планируются.