Hari ini satu lagi Aplikasi Web yang berhasil saya mutahirkan dengan menggunakan PHPMaker versi 11. Aplikasi Web tersebut menggunakan database Microsoft SQL Server. Di dalam database itu terdapat beberapa schema untuk mengelompokkan beberapa tabel sesuai dengan kategori schema tadi. Ada satu pelajaran berharga yang bisa saya ambil hari ini.
Awalnya dimulai dari pagi hari yang dihadapkan kepada sebuah isu kecil tapi cukup menjengkelkan, ehm. Apa itu? Adanya kejadian data di field Profil Pengguna (istilah di PHPMaker dikenal dengan User Profile) yang tidak pernah tersimpan ke database. Lumayan juga waktu yang dihabiskan untuk mengatasi isu ini. Kira-kira lebih dari dua jam, hehe…
Setelah ditelusuri, ketahuanlah penyebabnya. Ternyata karena adanya kode di dalam function SaveProfileToDatabase yang terdapat di file phpfn11.php menggunakan nama tabel Pengguna yang tidak disertai dengan awalan nama schema-nya.
Ini dia kode-nya:
$sSql = "UPDATE " . ew_QuotedName($UserTable->TableName) .
Ternyata bagian kode yang mengambil nama tabel Pengguna itu tidak mengeluarkan hasil yang diharapkan. Artinya, output-nya berbeda dengan nama tabel Pengguna yang didefinisikan di konstanta EW_USER_TABLE. Konstanta ini menghasilkan nama tabel yang lebih tepat, seperti ini:
define("EW_USER_TABLE", "[sm].[sm_users]", TRUE);
Perhatikan, bahwa di sana ada awalan nama schema-nya. Sementara kode di SQL tadi menghasilkan nama tabel sm_users saja (tanpa diawali dengan nama schema-nya).
Nah, dari situ, akhirnya bisa disimpulkan, bahwa cara yang paling aman menggunakan nama tabel Pengguna adalah dengan mengoptimalkan konstanta EW_USER_TABLE, sehingga kode yang paling atas tadi seharusnya berubah menjadi:
$sSql = "UPDATE " . EW_USER_TABLE .
Wuih, lega juga akhirnya bisa menemukan penyebab tidak tersimpannya data Profil Pengguna ke database MS SQL Server. Yang jelas, isu ini baru ketahuan di database MS SQL Server jika kita menggunakan beberapa schema di dalam project PHPMaker. Sebelumnya, hal ini tidak terjadi di database MySQL karena database MySQL tidak mengenal schema seperti di SQL Server.
Mengenai hal ini sudah langsung saya laporkan melalui Forum Diskusi PHPMaker, dengan harapan perubahan ini bisa dimasukkan pada PHPMaker versi minor berikutnya.
Satu lagi pelajaran yang sangat berharga berdasarkan pengalaman menggunakan PHPMaker! 😀
Tinggalkan Balasan