Project

General

Profile

Actions

Database » History » Revision 1

Revision 1/16 | Next »
Panayotis Katsaloulis, 14/12/2013 18:36


Σύνδεση με τη βάση δεδομένων μέσω του αντικειμένου Database

Η σύνδεση με τη βάση δεδομένων από την έκδοση του Open eClass 3 και μετά γίνεται με τη χρήση του αντικειμένου Database που ορίζεται στο modules/db/database.php. Στη κανονική χρήση των ββλιοθηκών το αντικείμενο αυτό παρέχεται στο χρήστη μέσω της init.php, οπότε δε χρειάζεται κάποιο require ή include για να χρησιμοποιηθεί, απλά να χρησιμοποιηθούν οι μέθοδοί του. Η υλοποίηση

Η πρόσβαση στο αντικείμενο αυτό γίνεται κυρίως με τη static μέθοδο get(). Αν είναι δυνατή η κατασκευή ενός τέτοιου αντικειμένου, δεν είναι προτιμόμενη μέθοδος, γιατί μέσω της get() υπάρχουν ορισμένες βελτιστοποιήσεις κατά τη σύνδεση με τη βάση. Σε περίπτωση που θέλουμε να συνδεθούμε στη προκαθορισμένη βάση δεδομένων του eClass τότε η πρόσβαση γίνεται ως εξής:

  Database::get();

Αν θέλουμε να συνδεθούμε σε κάποια άλλη βάση, π.χ. σε ένα μάθημα, τότε δίνουμε στη μέθοδο get() μία παράμετρο. Παράδειγμα, για να συνδεθούμε στη βάση TM001 τότε η σωστή σύνταξη είναι η εξής:

  Database::get("TM001");

Οι μέθοδοι που υποστηρίζονται είναι οι εξής:
  • Database::get()->query($statement);
  • Database::get()->queryArray($statement);
  • Database::get()->querySingle($statement);
  • Database::get()->queryFunc($statement, $callback_function);

Σε κάθε μία μέθοδο, η πρώτη παράμετρος είναι το SQL query που μας ενδιαφέρει να εκτελέσουμε, ακολουθούμενο από μία λίστα με παραμέτρους που θα γίνει εισαγωγή στο query. Είναι λάθος πρακτική σε περίπτωση που θέλουμε να εισάγουμε κάποια παράμετρος στο query να τη δώσουμε λεκτικά στο query αυτό καθ'εαυτό, από το να το δώσουμε σαν επιπρόσθετη παράμετρος. Για να σημειώσουμε στο ίδιο το query σε ποιο σημείο είναι η κάθε παράμετρος, χρησιμοποιούμε το σύμβολο «?».

Για παράδειγμα, αν θέλουμε να εκτελέσουμε το SQL query

DELETE FROM course_review WHERE course_id = 1;

o σωστός τρόπος να συντάξουμε τις παραμέτρους είναι ο εξής:
@Database::get()->query("DELETE FROM course_review WHERE course_id = ?", 1);

Μέθοδος query($statement);

Με τη μέθοδο αυτή εκτελούμε ένα απλό query από το οποίο δεν περιμένουμε αποτελέσματα. Παράδειγμα χρήσης:

Database::get()->query("DELETE FROM course_review WHERE course_id = ?", $cid);

Updated by Panayotis Katsaloulis over 10 years ago · 1 revisions