Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Класс db_con 
V
    Опции темы
Muerto
Дата 20.8.2010, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Не актуальная информация

Это сообщение отредактировал(а) Muerto - 6.9.2010, 00:25


--------------------
user posted image
PM MAIL   Вверх
SoWa
Дата 20.8.2010, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



Цитата(Muerto @  20.8.2010,  16:35 Найти цитируемый пост)
init()дает классу параметры как пароль к базе, название базы и тп.

Я бы это вписал в __construct

Цитата(Muerto @  20.8.2010,  16:35 Найти цитируемый пост)

include('./classes/db_con.php');
$myconn=new db_con();
echo $myconn->db_stats();
$query= $myconn->do_query("insert into test (message) values('|~|вася ыыы ' ' ' ' ' |~|')");
$myconn->close_conn();
echo $myconn->db_stats();

Мне не очевидно совсем... Если у тебя есть метод init & open_conn, то где они вызываются в примере?

Цитата(Muerto @  20.8.2010,  16:35 Найти цитируемый пост)
minus_conn()-- к сетчику подключенийadd_query()++ к счетчику запросов

Если это нужно для статистики - то оставь. А если фишка без значимого применения - то зачем?

Это сообщение отредактировал(а) SoWa - 20.8.2010, 16:44


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
Muerto
Дата 20.8.2010, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Если у тебя есть метод init & open_conn, то где они вызываются в примере?

Что бы не писать когда я использую этот класс лишний код, do_query($thequery) делает init() и open_conn() если не открыто подключения

А фишка для подсчета подключений и запросов, это больше для проверки эффективности кода чтоли... в целях оптимизации скрипта

Это сообщение отредактировал(а) Muerto - 20.8.2010, 16:58


--------------------
user posted image
PM MAIL   Вверх
Muerto
Дата 20.8.2010, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Решил попытаться создать функции которые будут работать с mysqli->prepare

Пока что очень много сложностей...
есть функция
Код

 function prepare_query($thequery)


которая возвращает мне
Код

 mysqli->prepare($thequery);

к примеру
$query= $myconn->prepare_query("select * from test where id = ?");

Далее нужно делать

$query->bind_param('i', $id);
и $query->execute();


В чем проблема:

Во первым, по вашему дальше стоит сделать две функции или одну?

в любом случае, как мне построить функцию которая будет выполнять 
Код


$query->bind_param('i', $id);


и ещё одну или в той же которая будет делать 
Код

$query->execute();


главная проблема в том что  сейчас bind_param('i', $id); содержит только $id, но если строить глобальную функци, она должна получать любое количество значения...
т.е.  создаем функцию 

Код

prepare_binding($types (string), $values (array));



Но как же мне массив с $values впихнуть  в bind_param('i', $id);

там ведь между каждым символом нужна запятая... explode ',' что ли... в общем хэлп!


--------------------
user posted image
PM MAIL   Вверх
Muerto
Дата 20.8.2010, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Или более простым языком,

работает
Код

 prepare_params('s','hi',$query);


Но глобально написать я не знаю как, 
за место 's' может быть 'sdsssssss' и за место 'hi' может быть массив с данными...

Как же выполнить 
Код

bind_param($types, $values);
 ?

Это сообщение отредактировал(а) Muerto - 20.8.2010, 23:37


--------------------
user posted image
PM MAIL   Вверх
Muerto
Дата 21.8.2010, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Вот в общем, может кому пригодиться...
Код

    function prepare_query($thequery){
       if(!isset($this->conn_id))
       {
        $this->init();
        $this->open_conn();
       }
        return $this->conn_id->prepare($thequery);
    }
        function prepare_params($types,$values,$thequery){
            $thequery->bind_param($types, $values);
            return $thequery;
    }
    function prepare_execute($thequery){
            $thequery->execute();
             $meta = $thequery->result_metadata();
                while ($field = $meta->fetch_field()) {
    $var = $field->name;
    $$var = null;
    $parameters[$var] = &$$var;
}
            call_user_func_array(array($thequery, 'bind_result'), $parameters);

            while($thequery->fetch()) {
                print_r($parameters);

            }
    }


самая главная проблема теперь за место 
Код

   while($thequery->fetch()) {
                print_r($parameters);

            }


вернуть $thequery, и делать простой fetch_assoc к примеру


--------------------
user posted image
PM MAIL   Вверх
gta4kv
Дата 22.8.2010, 19:28 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Бред такой бред.
Вы спрашиваете какую бы функцию добавить в класс, который будет использоваться в вашем коде, для ваших, никому не известных, задач.
Где хоть какой то смысл?

Это сообщение отредактировал(а) gta4kv - 22.8.2010, 19:29
PM MAIL   Вверх
Sanchezzz
Дата 24.8.2010, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



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

имхо легче написать обертку на каждый класс по классу и в зависимости от настроек юзать его. хотя обычного mysql и mysqli достаточно. Даже если на хотинге нет этого mysqli это плохой хостинг и уже не твоя проблема что его нет. Уже давным давно забил на тех укого нет mysqli.



--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Photon
Дата 26.8.2010, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Злобный программер
**


Профиль
Группа: Участник
Сообщений: 282
Регистрация: 27.2.2009
Где: Таганрог

Репутация: 10
Всего: 12



А не проще bind_param и execute выполнять в одной функции?

DB.php


--------------------
With best regards..
PM MAIL ICQ Skype GTalk Jabber   Вверх
Muerto
Дата 5.9.2010, 23:05 (ссылка)    | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Доделал наконец то класс, вывожу результат вывода статического метода help

Functions list of db_con class
static function getInstance();
Create Singleton of the class
private function __construct();
Set's cache directory(place), and the cache extensions for file and variables cache
private function __clone();
Prevent object cloning
public function init_conn($db_uname,$db_pass,$db_name,$db_host='localhost',$db_cs='utf8',$special_escape ='x@x');
Initiates the connection variables
public function open_conn();
Open the connection
public function close_conn();
Kills and then closes the connection
public function get_sp_esc();
Get the CS from the class
public function set_sp_esc($value);
Sets the SC to the class
public function escape($thequery);
Escapes before do the query, using the special escape symbol you decide to use
public function do_query($thequery,$escape=0);
Do specified query, if escape is 1, it will use the escape function to do mysqli_real_escape
public function reset_bind();
Reset the types and params containers
public function var_bind(&$type,&$param);
Prepare the types and parameters, accepting varsiables one by one, adding them to array for func bind_params
public function ar_bind(&$type,&$param);
Prepare the types and parameters, accepting array
public function do_prepare($thequery);
Prepare the statement using ->prepare();
public function bind_params();
Bind the parameters with the function bind_param, before you use it, use ar_bin or var_bind functions, and of course after do_prepare
public function execute();
Executes the prepared statement with the binded parameters if there is...
public static function fetch_it($theresult,$type);
Fetch the result of a query, $type can be 'assoc', 'object', 'row', 'array' .
public function fetch_result($theresult);
Fetch the result with assoc method, for development purposes!
Usage Examples:
1. DEFINE('SC','x@x');
$db=db_con::getInstance();
$db->init_conn('root','lqsym','db1','localhost','utf8',SC);
$data=$db->do_query("INSERT INTO test (message) VALUES('".SC."".str_shuffle("abcdefghijklmnopqrstuvwxyz0123456789")."".SC."')",1);
$db->close_conn();
echo $db->reqs_num;
2.$db=db_con::getInstance();
$db->init_conn('root','lqsym','db1');
$db->do_prepare("INSERT INTO test (message,message2,message3,message4) VALUES(?,?,?,?)");
$db->reset_bind();
$types=array('s','s','s');
$vars=array('message1','message2','message3');
$db->ar_bind($types,$vars);
$onemore_t='s';
$onemore_v='cool';
$db->var_bind($onemore_t,$onemore_v);
$db->bind_params();
$db->execute();
$db->close_conn();

Это сообщение отредактировал(а) Muerto - 6.9.2010, 00:32


--------------------
user posted image
PM MAIL   Вверх
gta4kv
Дата 5.9.2010, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



а ООП в коде так и не пахнет
PM MAIL   Вверх
Muerto
Дата 6.9.2010, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



gta4kv, Наверно нет.
Но что вам там пахнет а что нет, мне говорит очень мало  smile 
Можно даже ткнуть на что то отсюда http://www.phpclasses.org/browse/class/10.html

А вот полноценная система для студентов которая на моем классе работает http://learn-php.ru/m_shaot/?shared=1 
+ класc Benchmark результат которого можно увидеть в самом низу...


Это сообщение отредактировал(а) Muerto - 6.9.2010, 00:15


--------------------
user posted image
PM MAIL   Вверх
SneG0K
Дата 6.9.2010, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 7
Всего: 54



И нафига это все?
PM WWW Skype   Вверх
Muerto
Дата 6.9.2010, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



SneG0K, Эти функции нужны для того что бы поднимать сайты за 5 секунд и не работать каждый раз с нуля
в конце ээто будет MVC фреймворк на котором я мои проекты лепить буду

Это сообщение отредактировал(а) Muerto - 6.9.2010, 00:33


--------------------
user posted image
PM MAIL   Вверх
Sanchezzz
  Дата 6.9.2010, 07:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



ну чисто для себя не плохо.


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0950 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.