Query klasse

Status
Niet open voor verdere reacties.

raymond88

Gebruiker
Lid geworden
24 feb 2010
Berichten
287
Ik ben nu al een tijdje bezig om PHP beter te leren kennen. Wat ik nu nog doe, is queries altijd volledig uitschrijven met bijhorende fetch e.d. Ik heb echter verschillende dingen gezien van klasses met query. Wat ik zoek is een klasse (kant en klaar dan), die eigenlijk alles kan wat je zo ook kan met volledig uitschrijven. Dus mysql_num_rows en allemaal die meuk. In short words, tutorial c.q. klasse met enige toelichting (zodat ik er nog iets van opsteek).
 
Weet je nog waar je die klasse allemaal hebt gezien? En zo ja, waar?

Dat zou wel een beetje helpen met wat je bedoeld. Want het is mij zo niet helemaal duidelijk.
 
Er zijn een aantal PHP frameworks met een aparte Database-klasse.

Bijvoorbeeld CakePHP, CodeIgniter, Kohana, Zend

Deze frameworks hebben een nette documentatie waarin staat wat welke functies doen.
 
MySQLi is een door PHP geleverd OOP Database-model.
In principe is het gelijk aan de MySQL-functies alleen dan object-oriented.

In principe kun je zelf ook functies maken welke SQL-queries voor je bouwen.

PHP:
class Database {

  public static function add($a_data, $s_table) {
    $s_fields = '';
    $s_values = '';
    foreach($a_data AS $s_fieldName => $s_fieldValue) {
      $s_fields .= $s_fieldName .',';
      $s_values .= $s_fieldValue .',';
    }
    $s_fields = substr($s_fields, 0, -1);
    $s_values = substr($s_values, 0, -1);

    $query = "INSERT INTO ". $s_table ." (". $s_fields .") VALUES (". $s_values .")";
    // example purpose
    return $query;
  }
}
$a_data = array("username" => "Tha Devil");
$s_table = 'users';

echo Database::add($a_data, $s_table);
 
Nou ik ben dit tegengekomen; http://www.phphulp.nl/php/scripts/3/1091/

Zoals daar op de site vermeldt staat, kan het nog maar enkele basis-dingen (select, delete). Wat ik wil is eigenlijk een compleet iets, dus ook het tellen van de num_rows enzo. Ik verwacht wel dat zoiets al geschreven is (en ik het wiel niet opnieuw wil uitvinden, niet dat ik dat kan maar toch).

Tevens heb ik een host waar mysqli niet ondersteund wordt. Is dit makkelijk her te schrijven, of beter om de host te voorzien van die mysqli?
 
MySQLi is een door PHP geleverd OOP Database-model.
In principe is het gelijk aan de MySQL-functies alleen dan object-oriented.

In principe kun je zelf ook functies maken welke SQL-queries voor je bouwen.

PHP:
class Database {

  public static function add($a_data, $s_table) {
    $s_fields = '';
    $s_values = '';
    foreach($a_data AS $s_fieldName => $s_fieldValue) {
      $s_fields .= $s_fieldName .',';
      $s_values .= $s_fieldValue .',';
    }
    $s_fields = substr($s_fields, 0, -1);
    $s_values = substr($s_values, 0, -1);

    $query = "INSERT INTO ". $s_table ." (". $s_fields .") VALUES (". $s_values .")";
    // example purpose
    return $query;
  }
}
$a_data = array("username" => "Tha Devil");
$s_table = 'users';

echo Database::add($a_data, $s_table);


Gebruik dat alsjeblieft nooit. :(

Dat zijn gevaarlijke en volstrekt overbodige functies. Query's moet je uitschrijven, niet laten genereren. Als je ze laat genereren worden ze per definitie beperkt door de generator. Leuk hoor, voor een minisysteem met simpele handelingen, maar niet als je allerlei ingewikkelde handelingen moet verrichten.

Straks gebruik je voor een deel van je app je generator, en voor de rest volledige query's. Handig!
 
Daarom ook mijn eerste advies: Als je toch een database-klasse wilt gebruiken, gebruik dan een framework.
Die "lusten" vaak een fatsoenlijk geformuleerde query en geven een resultaat terug.

Maar goed, wat ik in deze hele thread mis is de reden waarom je dit wilt.
Om er van te leren? Wat wil je dan leren?

Queries bouwen? Functies bouwen? OOP werken?

Beste leermethode is dat met eenvoudige applicaties te bouwen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan