Popularitas database Microsoft Access (http://www.microsoft.com/office/access) sebagian disebabkan oleh antarmuka grafisnya yang ramah pengguna. Selain menggunakan Access sebagai DBMS mandiri, Anda bisa menggunakan antarmuka grafisnya untuk mengatur pekerjaan dengan database lain seperti MySQL atau Microsoft SQL Server.

Untuk mendemonstrasikan dukungan ODBC PHP, saya akan menjelaskan proses koneksi ke database Microsoft Access di PHP. Ini sangat mudah dilakukan, namun berkat popularitas Microsoft Access, ini merupakan tambahan yang bagus untuk gudang kreatif Anda. Saya akan menjelaskan proses ini langkah demi langkah:

  1. Buat database Access. Diasumsikan Anda sudah mengetahui cara melakukannya, dan jika Anda belum mengetahui caranya, namun tetap ingin mengikuti pelaksanaan contoh ini, gunakan layanan program wizard. Saya membuat database kontak standar menggunakan wizard. Pastikan untuk membuat beberapa record dalam tabel dan ingat nama tabelnya, kita akan membutuhkannya segera!
  2. Simpan database di komputer Anda.
  3. Pada langkah selanjutnya, kita akan mengatur akses ke database Access menggunakan ODBC. Jalankan perintah Mulai > Pengaturan > Panel Kontrol (Mulai > Pengaturan > Panel Kontrol). Temukan ikon Sumber Data ODBC (32 bit) di Panel Kontrol. Ikon ini meluncurkan Administrator ODBC, yang digunakan untuk mengkonfigurasi berbagai driver dan sumber data pada sistem Anda. Jalankan program dengan mengklik dua kali ikon ini. Jendela Administrator terbuka secara default pada tab Pengguna DSN. Tab ini mencantumkan sumber data yang spesifik untuk pengguna dan hanya dapat digunakan di komputer tersebut. Contoh ini hanya akan menggunakan sumber data seperti itu.
  4. Klik tombol Tambah... di sisi kanan jendela. Jendela baru terbuka untuk memilih driver agar berfungsi dengan sumber baru. Pilih baris Microsoft Access Driver(*.mdb) dan klik Selesai.
  5. Jendela Instalasi Driver Microsoft Access ODBC (ODBC Microsoft Access Setup) baru muncul di layar. Temukan kotak teks Nama Sumber Data pada formulir dan ketikkan nama database Access yang Anda buat. Secara opsional, Anda dapat memasukkan deskripsi di kolom teks tepat di bawah kolom Nama Sumber Data.
  6. Klik tombol Pilih... - jendela bergaya Windows Explorer akan muncul. Ia meminta Anda untuk menemukan database yang akan diakses menggunakan ODBC.
  7. Temukan database Anda di pohon direktori dan klik dua kali di atasnya. Anda dikembalikan ke jendela Instalasi Driver Microsoft Access ODBC. Jalur ke database yang dipilih ditampilkan di atas tombol Pilih.... Klik OK.
  8. Siap! Sekarang Anda bisa bekerja dengan database Access menggunakan ODBC.

Yang harus Anda lakukan adalah membuat skrip di mana Anda akan bekerja dengan database melalui ODBC. Dalam skrip di bawah ini, fungsi umum ODBC (lihat di atas) akan digunakan untuk menampilkan semua informasi dari tabel kontak yang dibuat menggunakan Access wizard. Namun, sebelum melihat skenarionya, ada baiknya Anda mengetahui seperti apa tabel Kontak di Access (Gambar 11-3).

Beras. 11.3. Tabel kontak di MS Access

Sekarang setelah Anda mengetahui informasi apa yang akan diambil dari database, kita dapat melanjutkan ke skrip. Jika Anda lupa fungsi tertentu, lihat uraian di awal bab ini. Hasil Listing 11.7 ditunjukkan pada Gambar 1. 11.4.

Daftar 11.7. Menggunakan fungsi ODBC untuk bekerja dengan MS Access

Bukankah semuanya sederhana? Dan hebatnya adalah skrip ini sepenuhnya kompatibel dengan DBMS lain yang mendukung ODBC. Untuk latihan, coba ulangi semua tindakan yang dijelaskan untuk DBMS lain, jalankan skrip - dan Anda akan mendapatkan hasil yang sama seperti yang ditunjukkan pada Gambar. 11.4.

Jika Anda berencana membuat situs web dinamis pada platform Windows, kemungkinan besar Anda akan dihadapkan pada tugas memilih DBMS untuk menyimpan informasi (tidak ada pertanyaan tentang bahasa yang akan Anda gunakan untuk memprogramnya). Salah satu opsi untuk mengatasinya mungkin menggunakan MS Access sebagai server SQL. Selanjutnya akan dijelaskan cara mengakses database MS Access dengan script yang ditulis dalam PHP.

Sayangnya, PHP tidak memiliki alat bawaan untuk bekerja dengan DBMS ini, namun, tidak mengecualikan kerja sama mereka - kami akan menggunakan ODBC untuk terhubung ke database.

Pertama-tama, kita harus membuat apa yang disebut Sumber DSN. Untuk melakukan ini (opsi dipertimbangkan ketika pengguna menginstal Windows 2000 Rus) di panel kontrol, kita harus memilih item Administrasi, dan kemudian Sumber Data (ODBC). Selanjutnya pada jendela yang muncul, pilih tab system DSN, klik tombol add, pilih driver MS Access dan klik tombol selesai. Pada kolom input nama sumber data, kita tuliskan nama yang nantinya dapat kita gunakan untuk mengakses database kita, misalnya test, lalu tekan tombol pilih dan tunjukkan di mana letak file database kita di disk kita. Kemudian bila perlu kita dapat mengatur username dan password untuk mengakses database melalui ODBC dengan mengklik tombol tambahan. Sekarang kita memiliki sumber data ODBC, kita dapat menggunakan fungsi odbc_connect untuk menyambung ke database kita:

$x=odbc_connect("tes","tes","tes");
?>

Untuk meneruskan query ke DBMS, kita dapat menggunakan fungsi odbc_exec:

$res=odbc_exec($x,"buat tes tabel (f1 integer, f2 varchar(10))");
$res=odbc_exec($x,"masukkan ke dalam pengujian (f1,f2) nilai(1,"qwerty")");
$res=odbc_exec($x,"masukkan ke dalam pengujian (f1,f2) nilai(2,"asdfgh")");
?>

Jika, setelah menjalankan contoh ini, kita membuka database pengujian di MS Access, kita akan menemukan bahwa tabel pengujian baru telah muncul di sana dengan bidang f1 dan f2 masing-masing bertipe integer dan string; tabel akan memiliki dua catatan dengan data yang ditentukan dalam kueri.

Sayangnya, tidak semua fungsi untuk bekerja dengan ODBC berfungsi dengan benar dengan MS Access, misalnya fungsi odbc_num_rows dan odbc_fetch_array. Jadi pada versi PHP yang terinstal di komputer saya, PHP umumnya menampilkan pesan bahwa fungsi odbc_fetch_array tidak diketahui. Namun masalah ini terpecahkan jika dua fungsi berikut dijelaskan dan digunakan sebagai pengganti fungsi yang disebutkan sebelumnya:

fungsi xodbc_num_rows($sql_id, $CurrRow = 0)
{
$Jumlah Catatan = 0;
odbc_fetch_row($sql_id, 0);
sementara (odbc_fetch_row($sql_id))
{
$Jumlah Catatan++;
}
odbc_fetch_row($sql_id, $CurrRow);
kembalikan $NumRecords;
}
fungsi xodbc_fetch_array($hasil, $nomor baris=-1) (
if ($nomor baris< 0) {
odbc_fetch_into($hasil, &$rs);
) kalau tidak (
odbc_fetch_into($hasil, &$rs, $nomor baris);
}
foreach ($rs sebagai $kunci => $nilai) (
$rs_assoc = $nilai;
}
kembalikan $rs_assoc;
}

$res=odbc_exec($x,"pilih * dari pengujian");
$cnt=xodbc_num_rows($res);
?>



untuk ($i=0;$i<$cnt;$i++) {
$baris=xodbc_fetch_array($res,$i+1);
gema " ";
}
?>
f1f2
".$baris["f1"]."".$baris["f2"]."

Popularitas database Microsoft Access (http://www.microsoft.com/office/access) sebagian disebabkan oleh antarmuka grafisnya yang ramah pengguna. Selain menggunakan Access sebagai DBMS mandiri, Anda bisa menggunakan antarmuka grafisnya untuk mengatur pekerjaan dengan database lain seperti MySQL atau Microsoft SQL Server.

Untuk mendemonstrasikan dukungan ODBC di PHP, saya akan menjelaskan proses koneksi ke database Microsoft Access di PHP. Ini sangat mudah dilakukan, namun berkat popularitas Microsoft Access, ini merupakan tambahan yang bagus untuk gudang kreatif Anda. Saya akan menjelaskan proses ini langkah demi langkah:

  • Buat database Access. Diasumsikan Anda sudah mengetahui cara melakukannya, dan jika Anda belum mengetahui caranya, namun tetap ingin mengikuti pelaksanaan contoh ini, gunakan layanan program wizard. Saya membuat database kontak standar menggunakan wizard. Pastikan untuk membuat beberapa record dalam tabel dan ingat nama tabelnya, kita akan membutuhkannya segera!
  • Simpan database di komputer Anda.
  • Pada langkah selanjutnya, kita akan mengatur akses ke database Access menggunakan ODBC. Buka Mulai > Pengaturan > Panel Kontrol (Mulai > Pengaturan > Panel kendali). Temukan ikon Sumber Data ODBC (32 bit) di panel kontrol. Ikon ini meluncurkan Administrator ODBC, yang digunakan untuk mengkonfigurasi berbagai driver dan sumber data pada sistem Anda. Jalankan program dengan mengklik dua kali ikon ini. Jendela Administrator terbuka secara default pada tab Pengguna DSN (Pengguna DSN). Tab ini mencantumkan sumber data yang spesifik untuk pengguna dan hanya dapat digunakan di komputer tersebut. Contoh ini hanya akan menggunakan sumber data seperti itu.
  • Klik tombol Tambah... di sisi kanan jendela. Jendela baru terbuka untuk memilih driver agar berfungsi dengan sumber baru. Pilih baris Microsoft Access Driver (*.mdb) dan klik Selesai.
  • Jendela Microsoft Access ODBC Driver Setup (ODBC Microsoft Access Setup) baru muncul di layar. Temukan kotak teks Nama Sumber Data pada formulir dan ketikkan nama database Access yang Anda buat. Secara opsional, Anda dapat memasukkan deskripsi di kolom teks tepat di bawah kolom Nama Sumber Data.
  • Klik tombol Pilih... -- jendela bergaya Windows Explorer akan muncul. Ia meminta Anda untuk menemukan database yang akan diakses menggunakan ODBC.
  • Temukan database Anda di pohon direktori dan klik dua kali di atasnya. Anda dikembalikan ke jendela Instalasi Driver Microsoft Access ODBC. Jalur ke database yang dipilih ditampilkan di atas tombol Pilih.... Klik OK.
  • Siap! Sekarang Anda bisa bekerja dengan database Access menggunakan ODBC.

Yang harus Anda lakukan adalah membuat skrip di mana Anda akan bekerja dengan database melalui ODBC. Dalam skrip di bawah ini, fungsi umum ODBC (lihat di atas) akan digunakan untuk menampilkan semua informasi dari tabel kontak yang dibuat menggunakan Access wizard. Namun, sebelum melihat skenarionya, ada baiknya Anda mengetahui seperti apa tabel Kontak di Access (Gambar 11-3).



Beras. 11.3.Tabel kontak di MS Access

Sekarang setelah Anda mengetahui informasi apa yang akan diambil dari database, kita dapat melanjutkan ke skrip. Jika Anda lupa fungsi tertentu, lihat uraian di awal bab ini. Hasil Listing 11.7 ditunjukkan pada Gambar 1. 11.4.

Daftar 11.7.Menggunakan fungsi ODBC untuk bekerja dengan MS Access

// Hubungkan ke sumber data ODBC "ContactDB" ;connect = odbc_connect("ContactDB", "","")

or die("Tidak dapat terhubung ke sumber data.");

// Buat teks permintaan

$query = "PILIH Nama_Depan, Nama_Belakang, Ponsel_Telepon, Email DARI Kontak";

// Siapkan permintaan

$hasil = odbc_prepare($sambungan,$query);

// Jalankan query dan tampilkan hasilnya

odbc_execute($hasil);

odbc_result_all($hasil, "BGCOLOR="#c0c0c0" perbatasan=1");

// Pemrosesan hasil selesai, kosongkan memori odbc_free_result($result);

// Tutup koneksi odbc_close($connect);

Bukankah semuanya sederhana? Dan hebatnya adalah skrip ini sepenuhnya kompatibel dengan DBMS lain yang mendukung ODBC. Untuk latihan, coba ulangi semua langkah yang dijelaskan untuk DBMS lain, jalankan skrip - dan Anda akan mendapatkan hasil yang sama seperti yang ditunjukkan pada Gambar. 11.4.

Beras. 11.4.Isi tabel Kontak di browser web

Saya juga punya masalah dengan database Microsoft Access jarak jauh. Hanya basisnya yang dihapus sedikit dari saya. Itu hanya terletak di jaringan lokal, di komputer lain.

Pada fungsi odbc_connect, PHP memberi saya kesalahan berikut:
Peringatan: odbc_connect() : Kesalahan SQL: [Microsoft Access ODBC Driver] Tidak dapat memulai aplikasi. Basis data sistem hilang atau telah dibuka dengan akses eksklusif oleh pengguna lain.

Ini terjadi ketika saya, di Windows saya, di komputer lokal saya, di driver ODBC, di properti "Sumber Data", tab "Sistem DSN", menunjukkan bahwa "Database Sistem" (file grup kerja - system.mdw ) ada di drive jaringan. Segera setelah saya mentransfer file yang sama ke disk lokal komputer saya (tempat saya duduk), semuanya mulai berfungsi dengan baik. Saya tidak tahu apa yang salah. Tolong beritahu saya! Untuk beberapa alasan, pengandar ODBC dengan keras kepala menolak untuk melihat file kelompok kerja pada drive jaringan bersama. Dan jika file tersebut disimpan secara lokal, maka semuanya akan berjalan lancar. Apa yang salah? Omong-omong, hal yang sama terjadi dengan pangkalan itu sendiri. Secara umum, agar odbc_connect berfungsi dengan baik, ternyata "File Grup Kerja" dan database itu sendiri harus ditempatkan di komputer lokal. Tapi aku tidak bisa melakukan itu. Basisnya harus tetap di tempatnya. Dan saya harus menghubunginya dari jarak jauh melalui ODBC dan memposting sedikit informasi dari database ke Internet di halaman situs. Saya tidak mengerti mengapa tidak membajak. Dalam pengaturan ODBC, Anda biasanya dapat menentukan semua jalur ke file database jarak jauh. Tapi setelah itu tidak membajak. Di komputer lokal, semuanya berjalan lancar.

Di komputer lokal adalah:
Sistem operasi WinXP-SP2
Microsoft Akses 97
PHP v5.2.3
ODBC v3.5
Server Aplikasi v2.5.5

Di komputer jarak jauh, ada server "dua ribu".
Saya berpikir mungkin sesuatu dengan akses tidak berfungsi dan dengan kebijakan keamanan. Tapi saya mentransfer database ke komputer biasa, di bawah sistem operasi Win 98, dan ke hard drive di bawah FAT32. Di sana juga tidak membajak. Sudah habis, saya tidak mengerti ada apa. Tampaknya ODBS tidak dapat bekerja dengan database jarak jauh sama sekali. Tapi tidak seperti itu. Itu harus menyerang siapa pun. Tolong, mohon!

-~{}~ 17.01.08 10:30:

Baiklah, masalah terpecahkan! Hore kawan!

Bagaimanapun, saya menemukan teks pada pertanyaan saya:
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=251&page=560
Itu postingan paling bawah. Bagi yang malas membobolnya, berikut hak cipta kata demi kata dari postingan tersebut:
"Sejauh yang saya pahami, kami bekerja di bawah windows. Tekan Ctrl + Alt + Del, pilih pengelola tugas dan lihat proses Apache. Dan kami melihat bahwa itu berjalan atas nama SISTEM, dan bukan atas nama Anda. Jadi kami bisa tidak menjangkau sumber daya jaringan. Jadi Kami menanganinya dengan memulai proses pada nama yang diinginkan."

Saya meluncurkan Apache atas nama pengguna dan semuanya mulai berjalan lancar.

Benar, ada satu penyergapan. Koneksi ODBC ke database harus ditulis secara manual pada kode program dengan cara sebagai berikut:
Odbc_Connect("DRIVER=(Microsoft Access Driver (*.mdb)); DBQ=//server/work/baza/mybaza.mdb; systemdb=//server/work/baza/system.mda", "nama pengguna", " password") atau Die("Tidak dapat terhubung ke database");

Jika semua terlalu banyak untuk membuat melalui sekrup "Administrator ODBC", semua sama tidak akan membajak. Administrator membuat jalur melalui nama disk. Yaitu dengan cara ini:
"Z:\kerja\basis"
dan saya memerlukan jalur untuk menjadi jaringan, tanpa huruf drive, dan dengan garis miring terbalik:
"//server/kerja/basis/"

Berikut adalah contoh lain yang menjelaskan penyergapan baru ini.
Kami memiliki drive jaringan "Z:\work\baza" yang terhubung ke komputer. Ini adalah analog lengkap dari jalur jaringan "//server/work/baza/"
Kami menulis kode program paling sederhana di PHP untuk membuka direktori jarak jauh. Tanpa ODBC apa pun. Sehingga Anda dapat dengan mudah memeriksa apakah itu membajak atau tidak:
OpenDir("Z:\kerja\basis"); //memberikan pesan kesalahan
OpenDir("//server/kerja/base/"); // tidak ada kesalahan

Ini pertanyaan baru saya. Apa yang saya lakukan salah? Karena alasan apa pun, tidak mungkin menggunakan "Administrator ODBC" Windows untuk menyambungkan sumber daya jaringan, atau apakah masih memungkinkan? Saya ulangi, penyergapan sekarang hanya tersisa dengan ejaan jalur ke sumber daya jaringan yang benar. Mungkin beberapa pengaturan terpisah dari antarmuka PHP sendiri yang bertanggung jawab atas momen ini?