Переводим свой сайт на MySqli с использованием ООП

В общем что-то стало скучно, да и новостей на SFB новых давно не появлялось и я решил написать статью об использовании ООП (для базы данных) в своих скриптах…Что такое ООП и зачем его использовать не буду, просто скажу что если что-либо менять то с ООП это будет быстрее. В нашем случае это переход с mysql на mysqli. Если вы очень хотите узнать чем лучше ООП в отличии от процедурки, то есть гугл, Велик, Rufus и NGS

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

После того, как закинули папку в корень вам надо открыть файл config.php и скопировать полностью его содержимое. Там вы увидите следующее

<?
###############################
# Хоть копирайт надо поставить :)
# Статью на шопе накатал и помог в объяснении всего Scrin
# http://sfb.so/user/Scrin/
# ICQ 20-76-79
###############################

#Устанавливаем абсолютный путь
define ( 'DIR', dirname ( __FILE__ ) );

#Подключаем Класс для работы с Mysqli
include_once DIR."/classes/mysqli.class.php";

#Объявляем константы с данными
define ("DBHOST", "localhost");

define ("DBNAME", "Имя базы данных");

define ("DBUSER", "Пользователь Бд");

define ("DBPASS", "Пароль для бд");  
#Не менять!!
define ("COLLATE", "cp1251");

$db = new db;
?>

Весь код прокомментирован, поэтому проблем не должно возникнуть. Прописываем свои данные для доступа к базе данных и полученное содержимое копируем в буфер обмена. Открываем с сайта Ваш config.php и удаляем оттуда всё содержимое. После того, как всё удалили вставляем то что получилось ранее и сохраняем.

Теперь нам надо скачать себе Notepad ++

После скачивания устанавливаем его. Открываем и выбираем Поиск-> Найти в файлах.

Переводим свой сайт на MySqli с использованием ООП

В строчке найти пишем: mysql_close($con);
В строчке заменить пусто
Фильтры: Всегда будет *.php
Папка: Папка с скачанным скриптом без папки с классом(который недавно закидывали и админки)
И нажимаем Заменить всё.

Далее будет идти:
Найти – Что надо вводить в строчке найти
Заменить – Что надо вводить в строчке Заменить

#Закрывать соединение нам не надо, поэтому просто удаляем его
Найти: mysql_close();
Заменить – пусто

#Дальше просто всё переводим на mysql
Найти: mysql_query
Заменить: $db->query

Найти: mysql_fetch_array
Заменить: $db->get_row

Найти: mysql_fetch_assoc
Заменить: $db->get_row

#Да, есть такая функция в гугле почитайте про неё
Найти: mysql_insert_id
Заменить: $db->insert_id

#Юзайте эту функцию, для того чтоб скулей везде не было fellow
Найти: mysql_real_escape_string
Заменить: $db->safesql

Теперь вроде и всё. А, не забыл facepalm

Сейчас начинается самое сложное wink

Нам нужно заменить все mysql_result. В MySqli Такой функции нет, поэтому придётся всё переделывать. В строке найти пишем mysql и нажимаем найти всё

После результатов поиска у вас выводится список всех файлов, где были найдены совпадения

Переводим свой сайт на MySqli с использованием ООП

И в каждый файл, который там есть заходим и меняем следующее:
Будут приблизительно 3 варианта с mysql_result в этом скрипте:

Первый:


$id=mysql_result($db->query("SELECT bla FROM …"),0,0);


Это мы заменяем на


$id2 = $db->super_query("SELECT bla FROM …");
$id = $id2["bla"];

Второй:


$sql = 'SELECT bla FROM …';
$row = $db->query($sql);
$count = $db->num_rows($row);
$id = mysql_result(($row),0,0);

Заменяем на:


$sql = 'SELECT bla FROM …';
$row = $db->query($sql);
$count = $db->num_rows($row);
$id2 = $db->get_row($row);
$id = $id2["bla"];

И последний:


$sql_id = $db->query("SELECT bla FROM …");
$id = mysql_result(($sql_id),0,0);


Заменяем на:


$sql_id = $db->super_query("SELECT bla FROM …");
$id = $sql_id["bla"];

Если у кого-то что-то не получилось, то пишем это в комменты, а лучше мне в ICQ.

Все спасибо на кошелёк: R176684640041 и в репу smile

0

Понравилась статья? Поделись в соц. сетях:

Похожие новости

Комментарии

  1. Цитата: moskit
    То есть сайт будет летать от этой процедуры ? Или я тупой 🙁


    т.е. место процедуры будешь использовать ООП. ООП не быстрее процедурки, но Mysqli это дело выравнивает.
    На http://www.clixsneo.com/ страницы грузились по 0,42 после введения ООП стали грузится по 0,32-0,35

    0
  2. # Хоть копирайт надо поставить 🙂
    # Статью на шопе накатал и помог в объяснении всего Scrin


    какой нафиг копирайт если это стянуто с движка DLE

    0
  3. Цитата: ZICKFREED
    какой нафиг копирайт если это стянуто с движка DLE


    Что всё стянуто?

    Цитата: Scrin
    В папке класс для работы с бд, взятый с DLE. Свой мне всегда лень писать, поэтому юзаю этот


    В тексте это было написано, не?

    и если все такие умные, так почему на буксах ооп не юзали раньше? я не видел что-то, а тут статью накатал, расписал что класс взят с длешки и ещё и не нравится.

    У тебя с статей вообще только Исправляем недочёт новостей на МФС и всё facepalm
    Выложи что-нибудь нормальное для людей, научись уважать чужой труд, а потом только комментируй

    0
  4. Цитата: Scrin
    какая разница? это сокращённый вариант


    Не соответствует стандартам программирования.

    Цитата: Scrin
    ага, на буксах и везде 5,3 и выше


    А что, еще есть хостинги на которых PHP 5.2?

    0
  5. Цитата: Артём
    Не соответствует стандартам программирования.


    Можно и так и так писать, темболее для такого крутого скрипта wink

    Цитата: Артём
    А что, еще есть хостинги на которых PHP 5.2?


    есть хостинги, на которых ещё 4-я версия стоит facepalm

    0
  6. Цитата: Scrin
    Можно и так и так писать, темболее для такого крутого скрипта


    А, ну для такого скрипта – да. Самое оно. wink

    Цитата: Scrin
    есть хостинги, на которых ещё 4-я версия стоит


    Пхахах, че, серьезно?

    0
  7. Цитата: Артём
    Пхахах, че, серьезно?


    Ты только узнал? я года назад видел где 3-я стоит, и не бесплатных

    Цитата: Артём
    А, ну для такого скрипта – да. Самое оно.


    а ты тут придераешься, то не так и это не так wink

    0
  8. Цитата: Scrin
    Ты только узнал? я года назад видел где 3-я стоит, и не бесплатныхЦитата: Артём


    Так и есть, только что узнал… Ну а че, я че, бегаю от одного хостера к другому что ли. Я если беру, то беру на FirstVDS.ru… Там PHP 5.3. Я думал остальные хостеры тоже давно обновились. belay Во дают…

    Цитата: Scrin
    а ты тут придераешься, то не так и это не так


    Да не. Ты меня пойми, дома никого нету, игр нормальных нету, музыка задолбала, сигарет нету, на улице тоже никого нету… Скучно, в общем…

    Ну я подумал, и решил что-нибудь полезное написать в комментариях… winked

    0
  9. Цитата: Артём
    Так и есть, только что узнал… Ну а че, я че, бегаю от одного хостера к другому что ли. Я если беру, то беру на FirstVDS.ru… Там PHP 5.3. Я думал остальные хостеры тоже давно обновились. Во дают…


    Это нормальные хостеры, а есть такие, которые серваки сдают в аренду чужие wink

    Цитата: Артём
    Да не. Ты меня пойми, дома никого нету, игр нормальных нету, музыка задолбала, сигарет нету, на улице тоже никого нету… Скучно, в общем…


    приезжай в минск, будет не скучно

    0
  10. Цитата: Forceman
    Тут нет таких буксов чтобы такие нагрузки и переводить на ооп и mysqli.


    А вдруг кто-нибудь захочет, чтоб букс был крутым? На профитцентре не помешало бы

    0
  11. Посмотрел класс очень понравилось. Не хватает токо такого как я выкладывал класс mysqli с использованием мемкеша. Но так как на буксе никто не использует почти мемкеш то пойдёт такой класс.

    0
  12. Цитата: VELIK505
    Посмотрел класс очень понравилось. Не хватает токо такого как я выкладывал класс mysqli с использованием мемкеша. Но так как на буксе никто не использует почти мемкеш то пойдёт такой класс.


    на бигкеше мемкеш тоже не где было использывать. очереди – в онлайн режиме обновляются, как и данные. всё остальное и так кешировалось)
    класс стати длешный) а стиль написания статей норм? а то я тут шоп поднимать собираюсь wink

    Цитата: gemiks
    незачто статья полезная елибы я чтото понимал в этом


    Учись, учись fellow

    0
  13. Честно говоря синтакс не выставлен, потом на ООП не похожу даже просто универсальный класс и куча лишнего
    Где private семейства
    Где __construct Это же ООП
    Ошибку можно обработать проще есть такая штука вообще то
    mysqli_connect_errno() и обработка с помощью throw new

    Честно говоря огорчил меня Scrin своими знаниями в ООП

    0

Добавить комментарий

Авторизация
*
*
Регистрация
*
*
*
Генерация пароля