Блог Александра Башкирова

ИТ и бизнес, компьютеры и ПО, фото, программирование и просто мысли…

Этот сайт в основном посвящен тому, что мне интересно вне работы. Ведется в порядке хобби.
Со всеми вытекающими из этого последствиями.

Метки: mysql

Быстрое разворачивание базы данных mqsql на хостинге

Рубрика: MaxSite -> Wordpress

Пришлось тут переносить сайт с локального на нормальный хостинг. Все бы хорошо - да нет на нем предустановленных оболочек типа phpMyAdmin, а снаружи порты mysql, естественно, закрыты.

В общем, засада. Не знаю, кто как - а я нашел отличное решение.

Знакомитесь: Sypex Dumper 2.

Скрипт устанавливается в отдельную папку на сервере, и работает автономно. При запуске вводите имя и пароль на сервер mysql - он не хранит их нигде (что хорошо с позиции безопасности)? получаете доступ к собственно скрипту.

Собственно, он "заточен" под создание и восстановление бекапов в виде .sql файлов. Причем, по заверениям разработчиков, с большими по размерами файлами он справляется не менее легко, чем с маленькими. Не знаю, не проверял - но вот небольшие (120 Кб) .sql файлы, сгенерированные phpMyAdmin, он "съедает" на ура. Что, в общем от него и требовалось ))

Так что если кому надо - весьма рекомендую.

NB - на сайте есть платные версии, и есть бесплатная. Мне более чем хватило возможностей бесплатной, хотя в платной, наверное, тоже есть своя "фишка", и не одна.

Неудобство addslashes в php

Рубрика: Alib.spb.ru

Для корректной работы с базами данных в 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('"', "&#034",$b);
$b = str_replace("'", "&#039",$b);
$b = str_replace("`", "&#096",$b);
$b = str_replace("'", "&#145",$b);
$b = str_replace("'", "&#146",$b);
$b = str_replace(""", "&#147",$b);
$b = str_replace(""", "&#148",$b);
return $b;
}

"Прогнав" через эту функцию тот же Hello, "World"!!! , мы получим следующую строку: Hello, &#034World&#034!!! , которая спокойно включается в запрос к БД, и не вызывает ошибок.

PS. Для того, чтобы поправить то, что есть в mysql, я использовал функцию mysql REPLACE

UPDATE table_name SET val_field = REPLACE( val_field ,'\\\\"','&#034');
UPDATE
table_name SET val_field = REPLACE( val_field ,'\\\"','&#034');
UPDATE
table_name SET val_field = REPLACE( val_field ,'\\"','&#034');
UPDATE
table_name SET val_field = REPLACE( val_field ,'\"','&#034');

Этих запросов должно быть выполнено столько раз, сколько максимально есть слешей в тексте.

MySQL Quick Admin Менеджер для работы с БД mysql

Рубрика: Alib.spb.ru

Всем, кому приходилось сталкиваться с разработкой на php/mysq, наверняка известен такой продукт, как phpMyAdmin. Отличный менеджер, который поддерживает кучу полезных функций... Но: большой (читай - не всегда шустрый) и функционально перегруженный. Я, например, порой не использую и 50% от того, что он умеет. И, кстати, сталкивался с парой хостингов, где его либо не дают ставить (используйте наш менеджер - который совсем "никакой"), либо работает он криво (вернее, криво настроен сам mysql - в основном такое встречается при работе с кодировками). Вывод: phpMyAdmin нужен, но далеко не всегда, и не всем.

С другой стороны, а зачем используется менеджер БД на хостинге? Да в первую очередь для того, чтобы "залить" дамп БД, и все. А это уже совсем другая задача (по отношению к задаче разработки БД), которая требует и других (меньших) ресурсов, и вообще проще. Просто проще.

Для таких случаев, наверное, и разрабатывался MySqlQuickAdmin - маленький, быстрый, не сильно навороченный менеджер БД, прекрасная альтернатива phpMyAdmin. В рамках обозначенных выше задач, разумеется. Впрочем, несмотря на свою "малость" полезных фич у него тоже хватает. Например:

  • Простая установка;
  • Русский "из коробки";
  • Возможности (не такие шикарные, как в pma, но вполне приемлемые) для разработчика БД (создание, удаление, переименование таблиц, ключей, полей, ...);
  • Поддержка нескольких баз;
  • Импорт/экспорт .sql файлов с сервер/на сервер;
  • Выполнение SQL команд и просмотр их результатов;

В общем, вполне себе достаточно для того, чтобы нормально работать.

Случайная фотография

Дизайн от: Templates Next | Адаптация d51x