Метки: mysql
Быстрое разворачивание базы данных mqsql на хостинге
Пришлось тут переносить сайт с локального на нормальный хостинг. Все бы хорошо - да нет на нем предустановленных оболочек типа phpMyAdmin, а снаружи порты mysql, естественно, закрыты.
В общем, засада. Не знаю, кто как - а я нашел отличное решение.
Знакомитесь: Sypex Dumper 2.
Скрипт устанавливается в отдельную папку на сервере, и работает автономно. При запуске вводите имя и пароль на сервер mysql - он не хранит их нигде (что хорошо с позиции безопасности)? получаете доступ к собственно скрипту.
Собственно, он "заточен" под создание и восстановление бекапов в виде .sql файлов. Причем, по заверениям разработчиков, с большими по размерами файлами он справляется не менее легко, чем с маленькими. Не знаю, не проверял - но вот небольшие (120 Кб) .sql файлы, сгенерированные phpMyAdmin, он "съедает" на ура. Что, в общем от него и требовалось ))
Так что если кому надо - весьма рекомендую.
NB - на сайте есть платные версии, и есть бесплатная. Мне более чем хватило возможностей бесплатной, хотя в платной, наверное, тоже есть своя "фишка", и не одна.
Неудобство addslashes в php
Для корректной работы с базами данных в php предусмотрена чудесная функция: addslashes. Делает она одну-единственную, но очень полезную вещь: экранирует кавычки слешами так, чтобы БД при работе со строками, где встречаюьтся кавычки, отрабатывала корректно.
Пример: допустим, в php-скрипт в переменной $_POST['val']
пришло значение Hello, "World"!!!
После обработки addslashes в этой переменной будет содержаться Hello, \"World\"!!!
,что гарантирует, что запрос к БД вида INSERT INTO table_name SET value="Hello, \"World\"!!!" будет выполнен корректно.
Пока вроде все красиво :) Проблема же состоит в том, что при разработке интерфейсов, в которых требуется частое редактирование данных, слеши накапливаются: при следующем "прогоне" через addslashes строа Hello, \"World\"!!!
превратится в Hello, \\"World\\"!!!
и так далее.
Решений может быть несколько.Можно, например, в скрипте "отлавливать" наличие экранированных слешей, "разэкрантировать" их обратно. Но недавно меня осенило. Можно заменять кавычки соответствующими символами html, которые и в базу пойдут без проблем, и отображаются как надо. Итогом размышлений стала следующая php-функция:
function safesql_str_code($b='')
{
if ($b=='') {return;}
$b = str_replace('"', """,$b);
$b = str_replace("'", "'",$b);
$b = str_replace("`", "`",$b);
$b = str_replace("'", "‘",$b);
$b = str_replace("'", "’",$b);
$b = str_replace(""", "“",$b);
$b = str_replace(""", "”",$b);
return $b;
}
"Прогнав" через эту функцию тот же Hello, "World"!!!
, мы получим следующую строку: Hello, "World"!!!
, которая спокойно включается в запрос к БД, и не вызывает ошибок.
PS. Для того, чтобы поправить то, что есть в mysql, я использовал функцию mysql REPLACE
UPDATE table_name SET val_field = REPLACE(
val_field
,'\\\\"','"');
UPDATE
table_name
SET
val_field
= REPLACE(
val_field
,'\\\"','"');
UPDATE
table_name
SET
val_field
= REPLACE(
val_field
,'\\"','"');
UPDATE
table_name
SET
val_field
= REPLACE(
val_field
,'\"','"');
Этих запросов должно быть выполнено столько раз, сколько максимально есть слешей в тексте.
MySQL Quick Admin Менеджер для работы с БД mysql
Всем, кому приходилось сталкиваться с разработкой на php/mysq, наверняка известен такой продукт, как phpMyAdmin. Отличный менеджер, который поддерживает кучу полезных функций... Но: большой (читай - не всегда шустрый) и функционально перегруженный. Я, например, порой не использую и 50% от того, что он умеет. И, кстати, сталкивался с парой хостингов, где его либо не дают ставить (используйте наш менеджер - который совсем "никакой"), либо работает он криво (вернее, криво настроен сам mysql - в основном такое встречается при работе с кодировками). Вывод: phpMyAdmin нужен, но далеко не всегда, и не всем.
С другой стороны, а зачем используется менеджер БД на хостинге? Да в первую очередь для того, чтобы "залить" дамп БД, и все. А это уже совсем другая задача (по отношению к задаче разработки БД), которая требует и других (меньших) ресурсов, и вообще проще. Просто проще.
Для таких случаев, наверное, и разрабатывался MySqlQuickAdmin - маленький, быстрый, не сильно навороченный менеджер БД, прекрасная альтернатива phpMyAdmin. В рамках обозначенных выше задач, разумеется. Впрочем, несмотря на свою "малость" полезных фич у него тоже хватает. Например:
- Простая установка;
- Русский "из коробки";
- Возможности (не такие шикарные, как в pma, но вполне приемлемые) для разработчика БД (создание, удаление, переименование таблиц, ключей, полей, ...);
- Поддержка нескольких баз;
- Импорт/экспорт .sql файлов с сервер/на сервер;
- Выполнение SQL команд и просмотр их результатов;
В общем, вполне себе достаточно для того, чтобы нормально работать.







