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

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

После того, как закинули папку в корень вам надо открыть файл config.php и скопировать полностью его содержимое. Там вы увидите следующее
<?
###############################
# Хоть копирайт надо поставить :)
# Статью на шопе накатал и помог в объяснении всего Scrin
# http://shopforbux.ru/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





Рубрика: Бесплатное » Дополнения   |   Автор: Scrin   |   Просмотры: 7128
Комментариев: 4
Публикаций: 0
ICQ: 656508923
- 150 +
  Автор: moskit   |   Группа: Пользователи   |   Дата: 01 августа 2012  
То есть сайт будет летать от этой процедуры ? Или я тупой :(
Комментариев: 59
Публикаций: 2
ICQ: 207679
- 143 +
  Автор: Scrin   |   Группа: Пользователи   |   Дата: 01 августа 2012  
Цитата: moskit
То есть сайт будет летать от этой процедуры ? Или я тупой :(

т.е. место процедуры будешь использовать ООП. ООП не быстрее процедурки, но Mysqli это дело выравнивает.
На http://www.clixsneo.com/ страницы грузились по 0,42 после введения ООП стали грузится по 0,32-0,35
Комментариев: 107
Публикаций: 2
ICQ: --
- 105 +
  Автор: ZICKFREED   |   Группа: Пользователи   |   Дата: 01 августа 2012  
# Хоть копирайт надо поставить :)
# Статью на шопе накатал и помог в объяснении всего Scrin

какой нафиг копирайт если это стянуто с движка DLE
Комментариев: 59
Публикаций: 2
ICQ: 207679
- 143 +
  Автор: Scrin   |   Группа: Пользователи   |   Дата: 01 августа 2012  
Цитата: ZICKFREED
какой нафиг копирайт если это стянуто с движка DLE

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

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

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

У тебя с статей вообще только Исправляем недочёт новостей на МФС и всё facepalm
Выложи что-нибудь нормальное для людей, научись уважать чужой труд, а потом только комментируй
Комментариев: 36
Публикаций: 2
ICQ: 643680
- 6 +
  Автор: Артём   |   Группа: Пользователи   |   Дата: 01 августа 2012  

dirname ( __FILE__ )

Просто __DIR__, начиная с PHP 5.3.


<?

<?php
Комментариев: 59
Публикаций: 2
ICQ: 207679
- 143 +
  Автор: Scrin   |   Группа: Пользователи   |   Дата: 01 августа 2012  
Цитата: Артём
Просто __DIR__, начиная с PHP 5.3.

ага, на буксах и везде 5,3 и выше wink
Цитата: Артём
<?php

какая разница? это сокращённый вариант
Комментариев: 36
Публикаций: 2
ICQ: 643680
- 6 +
  Автор: Артём   |   Группа: Пользователи   |   Дата: 01 августа 2012  
Цитата: Scrin
какая разница? это сокращённый вариант

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

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

А что, еще есть хостинги на которых PHP 5.2?
Комментариев: 59
Публикаций: 2
ICQ: 207679
- 143 +
  Автор: Scrin   |   Группа: Пользователи   |   Дата: 01 августа 2012  
Цитата: Артём
Не соответствует стандартам программирования.

Можно и так и так писать, темболее для такого крутого скрипта wink
Цитата: Артём
А что, еще есть хостинги на которых PHP 5.2?

есть хостинги, на которых ещё 4-я версия стоит facepalm
Комментариев: 36
Публикаций: 2
ICQ: 643680
- 6 +
  Автор: Артём   |   Группа: Пользователи   |   Дата: 01 августа 2012  
Цитата: Scrin
Можно и так и так писать, темболее для такого крутого скрипта

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

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

Пхахах, че, серьезно?
Комментариев: 59
Публикаций: 2
ICQ: 207679
- 143 +
  Автор: Scrin   |   Группа: Пользователи   |   Дата: 01 августа 2012  
Цитата: Артём
Пхахах, че, серьезно?

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

а ты тут придераешься, то не так и это не так wink
Комментариев: 36
Публикаций: 2
ICQ: 643680
- 6 +
  Автор: Артём   |   Группа: Пользователи   |   Дата: 01 августа 2012  
Цитата: Scrin
Ты только узнал? я года назад видел где 3-я стоит, и не бесплатныхЦитата: Артём

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

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

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

Ну я подумал, и решил что-нибудь полезное написать в комментариях... winked
Комментариев: 59
Публикаций: 2
ICQ: 207679
- 143 +
  Автор: Scrin   |   Группа: Пользователи   |   Дата: 01 августа 2012  
Цитата: Артём
Так и есть, только что узнал... Ну а че, я че, бегаю от одного хостера к другому что ли. Я если беру, то беру на FirstVDS.ru... Там PHP 5.3. Я думал остальные хостеры тоже давно обновились. Во дают...

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

приезжай в минск, будет не скучно
Комментариев: 138
Публикаций: 2
ICQ: 567777707
- 490 +
  Автор: Forceman   |   Группа: Пользователи   |   Дата: 01 августа 2012  
Тут нет таких буксов чтобы такие нагрузки и переводить на ооп и mysqli.
Комментариев: 59
Публикаций: 2
ICQ: 207679
- 143 +
  Автор: Scrin   |   Группа: Пользователи   |   Дата: 01 августа 2012  
Цитата: Forceman
Тут нет таких буксов чтобы такие нагрузки и переводить на ооп и mysqli.

А вдруг кто-нибудь захочет, чтоб букс был крутым? На профитцентре не помешало бы
Комментариев: 69
Публикаций: 4
ICQ: --
- 314 +
  Автор: gemiks   |   Группа: Модераторы   |   Дата: 02 августа 2012  
поставил стрелочку вверх статье
Комментариев: 59
Публикаций: 2
ICQ: 207679
- 143 +
  Автор: Scrin   |   Группа: Пользователи   |   Дата: 02 августа 2012  
gemiks,
Спасибо love
Комментариев: 69
Публикаций: 4
ICQ: --
- 314 +
  Автор: gemiks   |   Группа: Модераторы   |   Дата: 02 августа 2012  
Цитата: Scrin
Спасибо

незачто статья полезная елибы я чтото понимал в этом wink
Комментариев: 240
Публикаций: 6
ICQ: 573235722
- -896 +
  Автор: VELIK505   |   Группа: Программисты   |   Дата: 02 августа 2012  
Посмотрел класс очень понравилось. Не хватает токо такого как я выкладывал класс mysqli с использованием мемкеша. Но так как на буксе никто не использует почти мемкеш то пойдёт такой класс.
Комментариев: 4
Публикаций: 1
ICQ: 635158208
- 126 +
  Автор: Xottabych144   |   Группа: V.I.P.   |   Дата: 02 августа 2012  
VELIK505,
Выложи пожалуйста статью с мемкешем для мфс love
Комментариев: 240
Публикаций: 6
ICQ: 573235722
- -896 +
  Автор: VELIK505   |   Группа: Программисты   |   Дата: 02 августа 2012  
Мемкеш не будет работать на виртуальном хостинге
Комментариев: 59
Публикаций: 2
ICQ: 207679
- 143 +
  Автор: Scrin   |   Группа: Пользователи   |   Дата: 02 августа 2012  
Цитата: VELIK505
Посмотрел класс очень понравилось. Не хватает токо такого как я выкладывал класс mysqli с использованием мемкеша. Но так как на буксе никто не использует почти мемкеш то пойдёт такой класс.

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

Учись, учись fellow
Комментариев: 69
Публикаций: 4
ICQ: --
- 314 +
  Автор: gemiks   |   Группа: Модераторы   |   Дата: 02 августа 2012  
Цитата: Scrin
Учись, учись

будем учится
Комментариев: 64
Публикаций: 8
ICQ: 959098
- 82 +
  Автор: kirill   |   Группа: Программисты   |   Дата: 03 августа 2012  
Честно говоря синтакс не выставлен, потом на ООП не похожу даже просто универсальный класс и куча лишнего
Где private семейства
Где __construct Это же ООП
Ошибку можно обработать проще есть такая штука вообще то
mysqli_connect_errno() и обработка с помощью throw new

Честно говоря огорчил меня Scrin своими знаниями в ООП
Комментариев: 59
Публикаций: 2
ICQ: 207679
- 143 +
  Автор: Scrin   |   Группа: Пользователи   |   Дата: 05 августа 2012  
kirill,
класс не мой, ещё раз повторяю. для буксов пойдёт и такой класс
Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.