Dalam term ini penggunaan database adalah menggunakan database MySQL
Koneksi ke server mySQL
$db_variable = mysql_connect("host", "nama_user", "password");
Buat database
$db_variable = mysql_create_db("nama_db");
Menggunakan database
mysql_select_db("nama_db", $db_variable);
Menjalankan query
$variable_hasil = mysql_query("sql query",$db_variable);
Menampilkan hasil query
mysql_result($result,nomor record,"field name");
atau
$baris = mysql_fetch_row($variable_hasil);
$data = $baris [nomor indek kolom field tabel];
atau
$baris = mysql_fetch_array($variable_hasil)
$data = $baris [nama kolom field tabel]
Perintah
mysql_fetch_row atau
mysql_fetch_array
setiap kali digunakan akan menujuk ke baris record secara berurutan
jika dipanggil secara berulang, sehingga perintah ini biasa digunakan
dalam
looping.
Contoh koneksi database :
<?
$hostname = "localhost";
$username = "root";
$password = "rahasia";
mysql_connect($hostname,$user,$password);
?>
atau
<?
$hostname = "localhost";
$username = "root";
$password = "rahasia";
if(!$db = mysql_connect($hostname,$user,$password))
{
echo mysql_error();
return 0;
}
?>
Contoh menampilkan isi tabel :
<?
$user = 'root';
$password = 'rahasia';
$db = 'demo';
mysql_connect('localhost', $user, $password);
@mysql_select_db($db) or die('Unable to open database');
$query = "select * from gbook";
$result = mysql_query($query);
$num = mysql_numrows($result);
?>
<html>
<body>
<b>Daftar Buku Tamu</b><br><br>
<table>
<tr>
<td>
<?
$i=0;
while ($i<$num):
{
$name = mysql_result($result,$i,"nama");
$email = mysql_result($result,$i,"mail");
$comments = mysql_result($result,$i,"komentar");
echo "Nama : <b>$name</b><br> ";
echo "E-mail : <a href='mailto:$email'><b>$email</a></b><br>";
echo "Komentar : $comments<hr width=400 align=left><p>";
}
mysql_close();
?>
</td>
</tr>
</table>
</body>
</html>
Contoh menambah record :
<html>
<body>
<?
if($submit)
{
$user = "root";
$password = "";
$db = "demo";
mysql_connect('localhost',$user,$password);
@mysql_select_db("$db") or die("Unable to open database");
$query = "insert into gbook (nama, mail, komentar) ".
"values('$nama','$mail','$komentar')";
$result = mysql_query($query);
mysql_close();
echo "<html><body>";
echo "<center><h3>Terima kasih atas kunjungan Anda!</h3></center>";
echo "</body></html>";
}
else
{
?>
Masukkan Saran dan Komentar Anda
<br>
<form method="post" action="<? echo $PHP_SELF ?>">
<table>
<tr>
<td>Nama Anda</td>
<td><input type="text" name="nama"></td>
</tr>
<tr>
<td>Alamat E-mail</td>
<td><input type="text" name="mail"></td>
</tr>
<tr>
<td>Komentar</td>
<td><textarea name="komentar" cols="50" rows="3"></textarea></td>
</tr>
</table>
<input type="Submit" name="submit" value="Kirim Data">
</form>
<?
}
?>
</body>
</html>
:: Mencoba PHP & mySQL
Membuat database pertama
Sebelum kita bermain-main dengan data dalam database, tentunya kita
membutuhkan data yang sudah ada didalamnya bukan? Cara yang paling mudah membuat
tabel adalah meng gunakan PHPMyAdmin. Dengan PHPMyAdmin kita dapat meng-
create,
edit dan
remove database,
table,
row,
field, dll. Sangat pasti, daripada Anda
melakukannya melalui telnet atau command prompt MySQL.
Pertama-tama, pastikan Anda telah memasang PHPMyAdmin dengan benar. Jika Anda
masih bingung, silakan baca penjelasannya di
http://www.phpwizard.net/projects/phpMyAdmin/. Melalui input form, buatlah database baru dengan nama `mydb'. Jika berhasil,
PHPMyAdmin langsung akan beralih ke database yang baru dibuat tersebut.
Sekarang kita membuat tabel dalam database. Kita bisa membuatnya secara
manual, tapi sekarang kita akan membuatnya dengan PHPMyAdmin pada field yang
tersedia. Lakukan
copy and
paste, baris perintah dibawah ini:
CREATE TABLE address ( id tinyint(4) DEFAULT '0' NOT NULL AUTO_INCREMENT, name varchar(50), address varchar(225), hnum varchar(10), wnum varchar(10),
PRIMARY KEY (id), UNIQUE id (id));
INSERT INTO address VALUES (1,'James Red','3 Not Here Cres,
Hopeville','555-4123','555-9777');
INSERT INTO address VALUES (2,'John Back','8 nice Place, Lo
','555-7894','555-3131');
INSERT INTO address VALUES (3,'Brad Feed','7 victor pl,
Moronville','555-1919','555-9764');
Baris perintah tersebut akan membuat table dengan nama 'address'. Table
'address' juga akan berisi tiga record. Pada contoh ini kita hanya ingin membuat
buku alamat sederhana.
Sekarang kita sudah memiliki database, table dan beberapa contoh data.
Sekarang kita akan tampilkan data tersebut dalam bentuk yang lebih manis dalam
form. Menggunakan PHP, kita mem-format data menjadi bentuk HTML.
Baris perintah tersebut akan membuat table dengan nama 'address'. Table
'address' juga akan berisi tiga record. Pada contoh ini kita hanya ingin membuat
buku alamat sederhana.
Sekarang kita sudah memiliki database, table dan beberapa contoh data.
Sekarang kita akan tampilkan data tersebut dalam bentuk yang lebih manis dalam
form. Menggunakan PHP, kita mom-format data menjadi bentuk HTML.
Kembali kepada data
Sekarang coba kita lakukan lagi
Copy and
Paste teks dibawah ini ke dalam HTML
editor lalu simpan dengan nama file 'ope.php':
<html>
<body>
<?PHP
$db = @mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
$result = mysql_query("SELECT * FROM address",$db);
printf("Name: %s<br>\n", mysql_result($result,0,"name"));
printf("Address: %s<br>\n", mysql_result($result,0,"address"));
printf("Home Number: %s<br>\n", mysql_result($result,0,"hnum"));
printf("Work Number: %s<br>\n", mysql_result($result,0,"wnum"));
?>
</body>
</html>
Kita baru saja membuat PHP script sederhana, yang hanya akan menampilkan satu
record.
Coba kita lihat apa yang terjadi jika dijalankan. Fungsi
mysql_connect()
membuka link ke MySQL server pada
host tertentu (
localhost) sebagai
root
(
username). Jika Anda ingin menggunakan
password, bisa ditambahkan setelah
username. Data untuk menjaga agar koneksi tertap terhubung tersimpan dalam
sebuah
variable $db.
mysql_select_db() akan memberitahu
web server bahwa semua
queries yang telah
dibuat langsung diarahkan ke database 'mydb'. Fungsi mysql
mysql_select_db()
bisa juga digunakan untuk membuat banyak koneksi ke banyak database.
Selanjutnya kita akan mengambil beberapa data dari database. Nanti kita
menggunakan fungsi
mysql_query(). Mengunakan koneksi database yang tersimpan
dalam variable
$db, MySQL memproses query sebagai parameter pertama. Hasilnya
tersimpan dalam variable
$result.
Terakhir fungsi
mysql_result() kita pakai untuk menyimpan nilai field yang
dihasilkan dari query kita tadi. Dengan
$result, kita pindahkan pada baris
pertama dan diberi nomor 0.
Jika query ini berhasil, tentu ada output-nya. Fungsi
print akan menangani
masalah pencetakan data. '%s' adalah simbol untuk
variable string, yang dalam
prosesnya akan digantikan oleh hasil dari parameter kedua dari fungsi tersebut,
yaitu
mysql_result($result,0,"name"). Query ini hanya akan menampilkan satu
baris tabel address. Jika kita ingin melihat semua baris, ubah 0 menjadi 1 (pada
masing-masing pemanggilan
mysql_result())
Selanjutnya, kita akan coba menampilkan multiple
record dan bagaimana
mengirim data dari/ke database.
Membuat looping
Sekarang kita lihat apa yang bisa dilakukan PHP dan MySQL. Buka 'open.php'
lalu ganti isinya dengan teks berikut:
<html>
<body>
<?PHP
$db = @mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
$result = mysql_query("SELECT * FROM address",$db);
echo "<table border=1>\n";
echo "<tr><td>Name</td><td>Address</td><td>Home Number</td><td>Work Number</td></tr>\n";
while ($myrow = mysql_fetch_row($result)) {
printf("<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>\n", $myrow[1], $myrow[2], $myrow[3],$myrow[4]);
}
echo "</table>\n";
?>
</body>
</html>
Simpan kembali 'open.php' lalu jalankan dari browser. Anda akan melihat semua
data yang ada dalam tabel. Kalau kita perhatikan
script-nya, Anda akan menemukan
beberapa hal baru.
Bagian dari tabel, statement
while() adalah baru. Statement
while akan
mengatakan bahwa selama ada satu baris saja, maka akan menampilkan data pada
semua baris yang ada. Fungsi
mysql_fetch_row() digunakan untuk mencapai basil
tersebut.
Yang menarik dari menggunakan
while() adalah jika query Anda tidak
menghasilkan record, Anda tidak akan mendapatkan pesan error. Tapi jika tidak
ada data, kita tidak akan tahu bagaimana cara memberitahunya ke user. Jadi kita
perlu membuat program bantu lain yang bisa memberitahu user jika ada fungsi
MySQL yang tidak berhasil menemukan record yang dicari dalam query:
<html>
<body>
<?PHP
$db = @mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
$result = mysql_query("SELECT * FROM address",$db);
if ($myrow = mysql_fetch_array($result))
{
echo "<table border=1>\n";
echo "<tr><td>Name</td><td>Address</td><td>Home Number</td><td>Work Number</td></tr>\n";
do {
printf("<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>\n", $myrow[name], $myrow[address], $myrow[hnum],$myrow[wnum]);
}
while ($myrow = mysql_fetch_array($result));
echo "</table>\n";
}
else {
echo "Sorry, no records were found!";
}
?>
</body>
</html>
Kalau diperhatikan, ada perbedaan dari
script 'open.php'. yaitu kita
menggunakan fungsi
mysql_fetch_array() bukan
mysql_fetch_row(), sehingga kita
bisa me-
refer ke field berdasarkan names
(such as $myrow["name"]) mereka
daripada mengunakan
id yang ada. Jelas ini jauh lebih mudah daripada menggunakan
angka Jadi kita tidak perlu pusing lagi.
Kita juga perlu menambahkan
do/ while dan sebuah statement
if-else. Statement
if-else mengatakan jika kita dapat me-
assign sebuah baris ke
$myrow, lalu
lanjut; atau
skip ke sesi lainnya dan menjalankan rutin yang berisi dalam blok
yang kita buat sendiri.
do/while merupakan variasi dari
while() yang kita gunakan pada bagian akhir
artikel ini. Kita membutuhkan
do/ while untuk alasan-alasan khusus: dengan
statement
if, kita
assign baris pertama yang dihasilkan oleh query ke variable
$myrow. Jika pada saat ini kita menjalankan statement while secara normal
(seperti
while ($myrow = mysql_fetch_row($result)), maka kita akan mem
bypass
record pertama dengan record kedua.
do/while bisa dipakai untuk menguji kondisi
setelah program dijalankan sekali, jadi tidak ada tidak sengaja men-
skip sebuah
baris.
Akhirnya jika tidak ada record sama sekali, statement akan dimasukan ke dalam
blok
else() dalam rutin yang akan dijalankan. Kalau man lihat bagaimana aksinya
jika dijalankan, ubah statement ke
SELECT * FROM dimana
id=6 atau yang mirip
dengan itu maka hasilnya tidak ada record.
Linking
Kita baru saja mempraktekan sebuah
looping. Sebelum kita lanjut, kita pahami
dulu bagaimana bekerja dengan HTML form, PHP melakukan
query string, dan metode
GET dan
POST.
Ada tiga cara untuk
GET informasi ke dalam
query variable string. Pertama,
menggunakan metode
GET dalam form. Kedua, mengetik langsung ke dalam URL pada
browser. Ketiga, menambahkan
query string ke dalam link. Buat saja
anchor tag
seperti berikut <a href="http://my_machine/mypage.php3?id=1">. Kita akan gunakan
teknik ini.
Pertama-tama, kita lakukan query lagi pada database, mengurutkan field
name.
Perhatikan script berikut:
<html>
<body>
<?PHP
$db = mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
// display individual record
if ($id) {
$result = mysql_query("SELECT * FROM address WHERE id=$id",$db);
$myrow = mysql_fetch_array($result);
printf("Name: %s\n<br>", $myrow["name"]);
printf("Address: %s\n<br>", $myrow["address"]);
printf("Home Number: %s\n<br>", $myrow["hnum"]);
printf("Work Number: %s\n<br>", $myrow["wnum"]);
} else {
// show employee list
$result = mysql_query("SELECT * FROM address",$db);
if ($myrow = mysql_fetch_array($result)) {
// display list if there are records to display
do {
printf("<a href=\"%s?id=%s\">%s</a><br>\n", $PHP_SELF, $myrow["id"], $myrow["name"]);
} while ($myrow = mysql_fetch_array($result));
} else {
// no records to display
echo "Sorry, no records were found!";
}
}
?>
</body>
</html>
Sekali lagi, timpa file 'open.php', jalankan dari browser dan lihat hasilnya.
Hal yang harus Anda perhatikan adalah field
name yang muncul, dan masing-masing
field
name berupa sebuah link. Output muncul karena
loop ditempatkan dalam rutin
yang kita buat.
Kita sudah mengunakan fungsi
printf(). Pertama, perhatikan masingmasing
quotation mark diawali dengan
backslash.
Backslash memberitahu ke PHP untuk
segera memproses karakter yang mengikutinya, daripada menjadikannya sebagai
bagian dari rutin program kita. Perhatikan juga penggunaan variable $PHP_SELF.
Variable ini (yang menyimpan nama dan lokasi script) dijalankan oleh setiap file
PHP. Ini penting karena kita hanya ingin file ini memanggil dirinya sendiri.
Dengan menggunakan $PHP_SELF, kita bisa tahu ini terjadi setiap saat: sekalipun
file dipindahkan ke direktori lain atau server.
PHP mampu melakukan sesuatu yang cerdik ketika melihat pasangan
name/ value
yang berisi
query string. Maka secara otomatis akan dibuatkan sebuah variable
dengan nama dari pasangan
name/value tersebut.
Variable ini berisi sebuah nilai
dari pasangan
name/value. Fitur ini bisa kita gunakan untuk menguji apakah
seorang user baru pertama kali atau kedua kali mengakses halaman ini. Yang perlu
kita lakukan hanyalah bertanya pada PHP adakah variable
$id. Jika ada script
akan menampilkan
individual account, berdasarkan
$id yang ada.
Menambah record ke address book
Kita sudah mempraktekan
GET data dari database dengan mudah. Lalu bagaimana
dengan
sending data? Dengan PHP, hal ini mudah dilakukan. Pertama, kita buat
halaman yang berisi form berikut:
<html>
<body>
<form method="POST" action="<?PHP echo $PHP_SELF?>">
Name:<input type="Text" name="name"><br>
Address:<input type="Text" name="address"><br>
Home Number:<input type="Text" name="hnum"><br>
Work Number:<input type="Text" name="wnum"><br>
<input type="Submit" name="submit" value="Enter information">
</form>
</body>
</html>
Kita pakai $PHP SELF lagi. Perhatikan bahwa setiap elemen form cocok dengan
nama field dalam database. Tapi ini tidak wajib; agar kita lebih mudah
melakukan
GET. Juga perhatikan bahwa kita sudah menambahkan nama
attribute pada
tombol
submit. Kita lakukan ini agar kita dapat menguji keberadaan
variable
$submit. Itulah sebabnya ketika halaman dipangil lagi, kita akan tahu seseorang
telah mengunakan form ini. Kita tidak perlu mempunyai halaman yang
loops back ke
dirinya sendiri. Kita boleh saja mempunyai dua, tiga, atau lebih halaman. Tapi
dengan mengunakan satu halaman, semuanya tetap bersama dan tetap dalam satu
file.
Sekarang kita tambahkan beberapa rutin lagi untuk memeriksa isian form.
Sekedar memastikan saja apakah semua isian dalam form sudah benar, kita akan
melemparkan semua variable ke layar melalui array
$HTTP_POST_ VARS. Fitur
debugging ini cukup bermanfaat. Jika kita ingin melihat semua variable yang
digunakan sebuah halaman, gunakan array
$GLOBALS.
<html>
<body>
<?PHP
if ($submit) {
// process form
while (list($name, $value) = each($HTTP_POST_VARS)) {
echo "$name = $value<br>\n";
}
} else{
// display form
?>
<form method="POST" action="<?PHP echo $PHP_SELF?>">
Name:<input type="Text" name="name"><br>
Address:<input type="Text" name="address"><br>
Home Number:<input type="Text" name="hnum"><br>
Work Number:<input type="Text" name="wnum"><br>
< input type="Submit" name="submit" value="Enter information">
</form>
<?PHP
} // end if
?>
</body>
</html>
Sekarang kita dapat mengumpulkan informasi dari user, coba ambil informasi
yang ada dalam form lalu POST ke database.
<html>
<body>
<?PHP
if ($submit) {
// process form
$db = mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
$sql = "INSERT INTO address (name,address,hnum,wnum) VALUES ('$name','$address','$hnum','$wnum')";
$result = mysql_query($sql);
echo "Thank you! Information entered.\n";
} else{
// display form
?>
<form method="POST" action="<?PHP echo $PHP_SELF?>">
Name:<input type="Text" name="name"><br>
Address:<input type="Text" name="address"><br>
Home Number:<input type="Text" name="hnum"><br>
Work Number:<input type="Text" name="wnum"><br>
<input type="Submit" name="submit" value="Enter information">
</form>
<?PHP
} // end if
?>
</body>
</html>
Script ini akan akan menambahkan data baru kedalam tabel
address. Bagaimana
kalau sekarang kita bicara
updating dan
deleting record dari dalam tabel.
Updating dan deleting record pada address book
Untuk meng-
update atau
delete record dari tabel 'address', kita gunakan
script yang ada sbb:
<html>
<body>
<?PHP
$db = @mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
if ($submit) {
// here if no ID then adding else we're editing
if ($id) {
$sql = "UPDATE address SET name='$name',address='$address',hnum='$hnum',wnum='$wnum' WHERE id=$id";
} else {
$sql = "INSERT INTO address (name,address,hnum,wnum) VALUES ('$name','$address','$hnum','$wnum')";
}
// run SQL against the DB
$result = mysql_query($sql);
echo "Record updated/edited!<p>";
} elseif ($delete)
{
// delete a record
$sql = "DELETE FROM address WHERE id=$id";
$result = mysql_query($sql);
echo "$sql Record deleted!<p>";
} else {
// this part happens if we don't press submit
if (!$id) {
// print the list if there is not editing
$result = mysql_query("SELECT * FROM address",$db);
while ($myrow = mysql_fetch_array($result)) {
printf("<a href=\"%s?id=%s\">%s</a> \n", $PHP_SELF, $myrow["id"], $myrow["name"]);
printf("<a href=\"%s?id=%s&delete=yes\">(DELETE)</a><br>", $PHP_SELF, $myrow["id"]);
}
}
?>
<P>
<a href="<?PHP echo $PHP_SELF?>">ADD A RECORD</a>
<P>
<form method="POST" action="<?PHP echo $PHP_SELF?>">
<?PHP
if ($id) {
// editing so select a record
$sql = "SELECT * FROM address WHERE id=$id";
$result = mysql_query($sql);
$myrow = mysql_fetch_array($result);
$id = $myrow["id"];
$name = $myrow["name"];
$address = $myrow["address"];
$hnum = $myrow["hnum"];
$wnum = $myrow["wnum"];
// print the id for editing
?>
<input type=hidden name="id" value="<?PHP echo $id ?>">
<?PHP
}
?>
Name:<input type="Text" name="name" value="<?PHP echo $name ?>"><br>
Address:<input type="Text" name="address" value="<?PHP echo $address ?>"><br>
Home Number:<input type="Text" name="hnum" value="<?PHP echo $hnum ?>"><br>
Work Number:<input type="Text" name="wnum" value="<?PHP echo $wnum ?>"><br>
<input type="Submit" name="submit" value="Enter information">
</form>
<?PHP
}
?>
</body>
</html>
Kelihatannya rumit tapi sebetulnya tidak. Script ini terbagi dalam tiga
bagian. Pertama statement
if() akan memeriksa adakah penekanan tombol
submit.
Jika ada penekanan tombol, script akan memeriksa keberadaan variable
$id. Jika
ada, akan ditambahkan record. Jika tidak, kita akan
editing record.
Selanjutnya kita memeriksa keberadaan variable
$delete. Jika ada, kita akan
deleting record. Perhatikan dengan statement
if() pertama, kita memeriksa
variable dari
POST, dan pada bagian ini, variable tersebut akan menjadi bagian
dari kumpulan variable metode
GET.
Nah, sekarang kita menampilkan semua daftar orang-orang dan form. Sekali
lagi, kita periksa dulu keberadaan variable
$id. Jika ada, kita query database
untuk menampilkan record yang sesuai. Jika tidak ada, kita hanya menampilkan
form kosong.
Kesimpulan
Dengan bermain dengan database, kita bisa banyak belajar. Jika masih belum
cukup, beli beberapa buku database yang memenuhi kebutuhan Anda.
Sumber:
devarticles
:: Fungsi-fungsi mySQL dalam PHP
Nama Fungsi |
Kegunaan |
mysql_connect |
Digunakan untuk membuka hubungan
(koneksi) dengan MySQL server. |
mysql_pconnect |
Membuka hubungan (koneksi)
permanen/tetap dengan MySQL server |
mysql_close |
Menutup hubungan (koneksi) dengan
MySQL server. |
mysql_create_db |
Membuat sebuah database baru pada
server database MySQL. |
mysql_drop_db |
Mendrop atau menghapus sebuah database
pada server database MySQL |
mysql_select_db |
Memilih sebuah database sebagai
database aktif |
mysql_query |
Mengirim perintah SQL ke server MySQL
untuk dieksekusi |
mysql_db_query |
Mengirim perintah SQL ke server MySQL
pada database aktif |
mysql_fetch_array |
Mengambil baris hasil sebagai array
assosiatif |
mysql_result |
Menampilkan data hasil query |
mysql_fetch_row |
Menampilkan baris hasil array satu
persatu. |
mysql_affected_row |
Menampilkan nomor baris akibat dari
insert, update, delete yang terakhir |
mysql_num_rows |
Menampilkan nomor baris pada hasil.
Perintah ini hanya bisa digunakan pada select |
mysql_fetch_field |
Mencari informasi kolom dari dari
hasil, dan menampilkannya sebagai obyek |
mysql_fetch_lengths |
Menampilkan panjang beberapa field
pada baris terakhir |
mysql_fetch_object |
Menampilkan baris hasil berupa obyek |
mysql_field_name |
Menampilkan nama field tertentu |
mysql_list_fields |
Menampilkan daftar field |
mysql_num_fields |
Menampilkan nomor field |
mysql_field_seek |
Mencari field tertentu |
mysql_field_type |
Mendapatkan tipe field tertentu |
mysql_insert_id |
Mendapatkan id dari operasi insert
sebelumnya |
mysql_data_seek |
Memindahkan hasil internal |
mysql_free_result |
Menampilkan memori yang bebas |
mysql_errno |
Menampilkan pesan error dari operasi
yang dilakukan terakhir kali |
mysql_error |
Menampilkan pesan error berupa text
dari operasi yang dilakukan terakhir kali |
mysql_list_dbs |
Menampilkan daftar database yang ada
pada database MySQL |
mysql_list_tables |
Menampilkan daftar tabel yang ada
pada database MySQL |
mysql_field_len |
Menampilkan panjang field tertentu |
mysql_field_table |
Mendapatkan nama field dari tabel
tertentu |
mysql_tablename |
Mendapatkan nama tabel |