Czy
nie byłeś nigdy zmęczony ciągłym pisaniem funkcji MySQL, aby pobrać jakieś
proste dane z tablicy? Ja byłem więc stworzyłem kilka pomocnych funkcji, które
załączam teraz do każdego pliku PHP korzystającego z baz danych. Zresztą
zobacz sam !
Jeżeli jesteś już gotowy do stworzenia portalu lub strony, na pewno przyjdzie
potrzeba wielokrotnego używania funkcji mysql_connect,
mysql_query oraz mysql_fetch_array. I mogę powiedzieć Ci tylko jedno, będziesz
tym zmęczony. Stworzyłem zatem osobny plik, w którym umieściłem kilka
funkcji, które umożliwiają pobieranie danych, kasowanie, dodawanie oraz
modyfikowanie rekordów w bazie danych. Dzięki temu pisanie kodu stało się
bardziej strukturalne i mniej męczące aniżeli wcześniej.
Kolejnym
plusem jest prostsze odnajdywanie błędów w kodzie.
W każdym pliku PHP, który korzysta z baz danych, wstawiam poniższe linie
kodu:
#
funkcje SQL:
require 'SQLFunctions.inc.php3';
Plik
ten zawiera 6 funkcji:
- connectIt()
- łączy z bazą danych
-
doSelect()
- pobiera rekord z bazy danych
-
numSelect()
- zlicza ilość rekordów (wierszy) w zbiorze wyników
-
doInsert()
- wstawia nowy rekord do bazy danych
-
doUpdate()
- modyfikuje rekordy w bazie danych
-
doDelete()
- kasuje rekordy w bazy danych
W
artykule wyjaśnie pierwsze dwie funkcje.
Jak
to działa
Używając
funkcji MySQLa bezpośrednio w PHP, będziesz musiał wykonać kilka rzeczy
zanim otrzymasz wynik z bazy danych. Jak Julie wyjaśnił w artykule, musimy połączyć
się z bazą danych, następnie użyć zmiennej połączenia (id) w każdej z
funkcji MySQLa (wstawianie, usuwanie czy też pobieranie danych z tablicy).
W moich funkcjach musiałem zrobić to samo. Pierwszą rzeczą było połączenie
się z bazą danych. Stworzyłem zatem jedną funkcję, która ma za zadanie
tylko łączenie się z bazą danych.
Funkcja
connectIt:
function
doSelect($table, $condition = " ", $selectThis = "*") {
#deklarowanie zmiennych globalnych
global $db;
# łączenie się z bazą danych
$connect = connectIt ();
# wykonanie zapytania SQL
$sqlQuery = "SELECT " .
$selectThis
. " FROM " . $table . " " . $condition;
$queryID = mysql_db_query ($db, $sqlQuery, $connect);
# print $sqlQuery;
# print "<p>Query: " . $sqlQuery;
$resultArray = mysql_fetch_array($queryID);
return $resultArray;
}
Funkcja
doSelect() pobiera trzy zmienne : $table, $selectThis i $condition. Zmienne $selectThis
i $condition nie są wymagane - oznacza to że jeżeli nie przypiszemy do nich
żadnych wartości to zostaną przypisane domyślne wartości.
W
trzeciej linii funkcji deklarujemy zmienne globalne - w tym wypadku zmienną $db
(baza danych). Zmienna ta umieszczona jest w osobnym pliku db.inc.php3 (o którym
wspomniałem wcześniej). Musimy przecież wiedzieć z jaką bazą danych mamy
się połączyć.
Piąta
linia wywołuje funkcję connectIt() i przypisuje zmienną połączenia (id) do
zmiennej $connect. Musimy ją znać podczas wywoływania funkcji mysql_db_query.
W
siódmej linii, tworzymy zapytanie SQL, które przypisujemy do zmiennej $sqlQuery.
String
podzielony jest na 5 części - połączenie specyficznych dla SQL słów (SELECT
oraz FROM), oraz trzech zmiennych, którym wartości przypisywane są podczas
wywoływania funkcji. Zobacz poniższe przykłady, aby zrozumieć zasadę działania
tej funkcji.
W dziewiątej linii tworzymy nową zmienną - $queryID, której przypisujemy
wynik funkcji mysql_db_query(). Funkcja ta pobiera trzy argumenty - $db, $sqlQuery
oraz $connect.
W dwunastej linii pobieramy wiersz z wyniku zapytania i przypisujemy go do
zmiennej $resultArray. Kolejna linia zwraca tą zmienną jako rezultat naszej
funkcji.
Uwagi: Dla ułatwienia debugowania kodu zawarłem w funkcji (linia 10) linijkę
kodu :
# print "<p>Query: " . $sqlQuery;
Dzięki wyrzuceniu komentarza z tej linii (#), zapytanie SQL zostanie wyświetlone
na ekranie. Używałem tego sposobu, gdy zwracane były inne rezultaty aniżeli
oczekiwane przeze mnie.
Przykłady
użycia funkcji:
Mamy
tablicę klientów, z kolumnami ID, Name, Address oraz phone (przeważnie
tablica tego typu będzie zawierała więcej detali, ale to jest tylko prosty
przykład)
Ex 1.
Chciałbyś
znaleźć wszystkich klientów o imieniu Jonson:
$condition
= " WHERE Name = 'Jonson'"
$table = "customer";
$info = doSelect($table, $condition);
# print the info;:
print "<p>ID: " . $info[ID];
print "<p>Name: " . $info[Name];
print "<p>Address: " . $info[Address];
print "<p>Phone: " . $info[phone];
Ex.
2
Chciałbyś znaleźć tylko adresy klientów o imieniu Jonson:
$select
= " Address ";
$condition = " WHERE Name = 'Jonson' ";
$table = "customer";
$info = doSelect($table, $condition, $select);
print "<p>Address: " . $info[Address];
lub
print
"<p>Address: " . $info[0];
Autor:
Roer Kai tłum. Tomasz Szmigiel
tomasz.szmigiel@inetplus.pl