Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Klasa MySql
Forum PHP.pl > Forum > PHP > Object-oriented programming
Daimos
Witam, zabieram sie wlasnie za robienie swojej klasy do komunikacji z baza MySql
mam pytanie, jak waszym zdaniem najlepiej zastapic zapytania typu INSERT UPDATE DELETE
myslalem nad takim rozwiazaniem, z zastosowaniem tablic asocjacyjnych
  1. <?php
  2. $sql -> mysql_update(array('pole1'=>'wartoscdopola1',.....), array('id'=>'2'));
  3. // zmienialo by to pole1 w wierszu gdzie id = 2
  4. ?>

chodzi o ogolnie o pomysl z zastosowaniem tych tablic
pierwsza tablica to np. wlasnie pola i wartosci, drugie to parametry WHERE
myslicie ze to jest dobre rozwiazanie?
LBO
Szczerze już bardziej wolę adaptery typu PDO albo MySQLi, czyli przygotowywanie zapytań i bindowanie parametrów.

Po za tym, klasa Zend_DB_Select (z Zend Frameworka) jest na pewno powiązana z tym czego szukasz.
Daimos
przyznam ze nie znam klasy zend_db_select
ale ja nie szukam gotowca, szukam "rady" smile.gif
chce po prostu napisac swoja klase w miare potezna (jak na moje mozliwosci) i mysle nad tym, czy ten sposob ktory przedstawilem, bylby dobrym rozwiazaniem
Sedziwoj
Czy poznanie oznacza od razu używanie?
To jest raczej typowe, że patrzysz jak dany problem rozwiązują inni i 'podkradasz' pomysły.
A do tego piszesz to w dziale obiektowego programowania, więc jednak używanie tablic nie jest najlepsze.
Proponowane jest stworzenie obiektu który odwzorowuje w pewien sposób dane które są pobierane/zapisywane w bazie danych.
Athlan
Ja to mam tak:

  1. <?php
  2. $oDb->param = value;
  3. $oDb->param = value;
  4. $oDb->param = value;
  5. $oDb->param = value;
  6.  
  7. $oDb->setWhere('pole = wartosc');
  8. $oDb->dbUpdate('tabelka'); // lub $oDb->dbInsert('tabelka');
  9. ?>


Skrobałem kiedyś i powiem, że nadal używam bo jest i wygodne, i wydajne. Ma trochę okrojone możliwości, gdyż stoi na tym już baaaardzo dużo aplikacji i zdobyłem w miarę doświadczenia, aby się przekonać. Nie mogę na przykład dodać do where takiego czegos:

$oDb->addWhere('...');
// troche kodu, jakis waruneczek
$oDb->addWhere('...');

Więc jak będziesz pisał swoją klasę to pamiętaj o maksymalnej elastyczności.

Jeżeli chcesz popatrzeć:
Abstrakcyjna:
http://framework.vgroup.pl/expose-e8d3d22f...c1c9b5cf7e2.htm
MySQL:
http://framework.vgroup.pl/expose-4f9a2516...fa7de89f464.htm

Ale tak jak mówi LBO, PDO ma już swój mechanizm i warto go zastosować smile.gif

Pozdrawiam smile.gif
Sedziwoj
Tak patrzyłem, i stwierdziłem że dziwnie wzorzec singleton'a zaimplementowałeś. Można też by było __sleep i __wakeup oraz __clone nadpisać.

EDIT:
poprawiłem budowę zdania

a raczej błędnie wzorzec singletona, bo pole $_rConnection powinno być static. Inaczej reguła z konstruktora jest bez sensu...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.