Masino Sinaga

Web Development, PHPMaker, & PHP Report Maker

Anda di sini: Beranda / PHPMaker / Solusi Supaya Data Karakter Petik Tunggal Bisa Tersimpan dari PHPMaker
Fleksibelnya Database Helper Class yang Dihasilkan oleh Masino Extensions
Supaya Standar Waktu Selalu 00:00:00 di DateTime Picker dari PHPMaker

Solusi Supaya Data Karakter Petik Tunggal Bisa Tersimpan dari PHPMaker

April 5, 2016 oleh Masino Sinaga Tinggalkan Komentar

Permasalahan klasik yang paling sering terjadi ketika menyimpan data ke Database disebabkan karena karakter petik tunggal. Data tidak dapat disimpan karena mengandung karakter petik tunggal di dalamnya. Tidak terkecuali bagi Web Developer yang membangun Aplikasi Web dengan PHP.

Lagi-lagi, beruntunglah Anda sebagai Web Developer jika membangun Aplikasi Web dengan memakai PHPMaker. Mengapa? Karena PHPMaker sudah menangani hal ini dengan cerdas. PHPMaker dapat men-generate kode PHP yang dilengkapi dengan fungsi untuk menangani karakter petik tunggal tadi.

Proses penyimpanan data melalui form Add dan Edit yang dilakukan menggunakan kode yang dihasilkan oleh PHPMaker tidak akan menimbulkan error. PHPMaker menyediakan sebuah fungsi bernama ew_QuotedValue untuk mencegah error tadi. Enaknya, fungsi tersebut bahkan bisa menangani berbagai jenis Database yang selama ini didukung oleh PHPMaker.

Meskipun demikian, potensi error saat menyimpan data yang mengandung karakter petik tunggal tetap bisa terjadi. Sekalipun di dalam Aplikasi Web yang dihasilkan oleh PHPMaker. Lho, kok? Hehe, tenang dulu. Jangan buru-buru panik.

Pontensi yang saya maksud di sini karena Web Developer bisa saja menjalankan perintah SQL seperti INSERT INTO atau UPDATE melalui server event. Perintah SQL tadi bisa dieksekusi dengan mudah melalui fungsi ew_Execute.

Fungsi ew_Execute ini bisa dipanggil melalui kode PHP yang ditambahkan pada server event tertentu. Jika nilai pada klausa VALUES tidak ditangani dengan menggunakan fungsi ew_QuotedValue di atas tadi, maka di situlah potensi error bisa akan terjadi.

Mari simak contoh sederhana berikut. Katakanlah di server event Row_Inserted milik table trans, kita akan menjalankan perintah SQL INSERT INTO untuk menambahkan data ke table temp:

function Row_Inserted($rsold, &$rsnew) {
	//echo "Row Inserted"
	$Descr = $rsnew["Description"];
	$sSqlInsert = "INSERT INTO temp (Description) VALUES ('".$Descr."')";
	ew_Execute($sSqlInsert);
}

Untuk menyederhanakan contoh, maka anggap saja table temp tersebut hanya terdiri dari dua field, yaitu ID dan Description. Field Pertama tipenya integer dan nilainya otomatis bertambah satu, atau Auto Increment; sekaligus berperan sebagai Primary Key. Sedangkan field Kedua tipenya varchar(100).

Jika misalnya data pada field Description pada table trans tadi bernilai Jum’at (perhatikan, ada satu karakter petik tunggal di sana), maka perintah SQL INSERT INTO di atas akan menyebabkan terjadinya error. Mengapa? Karena akan menghasilkan string seperti ini:

INSERT INTO temp (Description) VALUES ('Jum'at')

Untuk mengatasi error itu, maka kode pada server event Row_Inserted di atas cukup diubah menjadi seperti ini:

function Row_Inserted($rsold, &$rsnew) {
	//echo "Row Inserted"
	$Descr = ew_QuotedValue($rsnew["Description"], EW_DATATYPE_STRING, 0);
	$sSqlInsert = "INSERT INTO temp (Description) VALUES ($Descr)";
	ew_Execute($sSqlInsert);
}

Dengan menggunakan kode barusan, maka output dari SQL INSERT INTO di atas akan menjadi seperti (asumsi: database MySQL):

INSERT INTO temp (Description) VALUES ('Jum\'at')

Perhatikanlah bahwa sistem secara smart menangani berdasarkan jenis Database-nya. Karena MySQL, maka sistem akan menambahkan karakter backslash sebelum karakter petik tunggal yang ada di dalamnya. Error pun tidak akan terjadi.

Sedangkan jika misalnya menggunakan Database SQL Server, maka sistem akan menambahkan satu karakter tunggal tambahan, sehingga output dari SQL di atas akan menjadi seperti ini:

INSERT INTO temp (Description) VALUES ('Jum''at')

See? Sudah lihat apa saja perbedaan dan dampaknya? Hohoho… 🙂

Perhatikan bahwa sekarang kita harus menangani nilai yang ditampung pada variabel $Descr dengan menggunakan fungsi ew_QuotedValue. Ada tiga parameter di dalamnya sebagai berikut:

  1. Parameter Pertama adalah nilai yang akan ditangani. Dalam contoh di atas adalah nilai yang berasal dari field Description, yaitu: $rsnew[“Description”].
  2. Parameter Kedua adalah tipe data yang akan ditangani. Dalam contoh di atas, karena tipenya adalah varchar dengan panjang 50 karakter, maka diwakili oleh sebuah konstanta yang bernama EW_DATATYPE_STRING. Ada delapan tipe data yang saat ini didukung, yaitu: EW_DATATYPE_STRING, EW_DATATYPE_MEMO, EW_DATATYPE_TIME, EW_DATATYPE_XML, EW_DATATYPE_BLOB, EW_DATATYPE_DATE, EW_DATATYPE_GUID, dan EW_DATATYPE_BOOLEAN.
  3. Parameter Ketiga adalah ID dari Database yang digunakan. Secara standar nilai parameter ketiga adalah nol (0) jika tidak ditentukan. Apalagi jika Anda hanya menggunakan satu koneksi Database di dalam project PHPMaker Anda. Baca topik Linked Tables dari menu Help PHPMaker jika Anda menggunakan lebih dari satu koneksi Database.

Perbedaan lainnya jika kita menggunakan fungsi ew_QuotedValue adalah dalam hal penyederhanaan penulisan variabel dalam klausa VALUES. Perhatikan dan bandingkanlah kode jika menggunakan fungsi ew_QuotedValue dan jika tanpa menggunakan fungsi ew_QuotedValue.

Jika tanpa menggunakan fungsi ew_QuotedValue, maka kita harus mengapit data di bagian klausa dengan karakter petik tunggal apabila tipe-nya String. Jika tipe-nya Integer, maka nilainya tidak perlu diapit oleh karakter petik tunggal:

	$sSqlInsert = "INSERT INTO temp (Description) VALUES ('".$Descr."')";

Sedangkan jika menggunakan ew_QuotedValue, maka kita tidak perlu lagi mengapitnya dengan karakter petik tunggal. Mengapa? Karena pada fungsi ew_QuotedValue tadi sudah menangani balikan dari nilai yang di-quote. Jika tipe-nya String, maka balikannya sudah diapit dengan karakter petik tunggal. Jika nilianya Integer (misalnya), maka balikannya tidak diapit oleh karakter petik tunggal:

	$sSqlInsert = "INSERT INTO temp (Description) VALUES ($Descr)";

Kesimpulannya, kita disarankan untuk selalu menggunakan fungsi ew_QuotedValue, karena fungsi ini memang dibuat untuk menangani berbagai tipe field untuk beragam jenis Database yang didukung oleh PHPMaker.

Betapa PHPMaker bisa menyederhanakan sekaligus menyembunyikan hal-hal teknis yang tidak perlu lagi ditangani oleh Web Developer. Serahkan saja urusan teknis yang berulang-ulang kepada PHPMaker. Kita sebagai Web Developer cukup berkonsentrasi untuk mengimplementasikan business-logic ke dalam Aplikasi Web yang dihasilkan oleh PHPMaker.

Ditempatkan di bawah: PHPMaker Ditag dengan:Belajar PHPMaker, ew_Execute, ew_QuotedValue, PHPMaker Indonesia, Row_Inserted, Server Events, Tutorial PHPMaker

Masino Sinaga

Web Developer pengguna PHPMaker untuk membangun Aplikasi Web sejak tahun 2004. Sampai sekarang masih aktif dan rajin membagikan pengalamannya menggunakan PHPMaker melalui situs masinosinaga.com dan ilovephpmaker.com.

Fleksibelnya Database Helper Class yang Dihasilkan oleh Masino Extensions
Supaya Standar Waktu Selalu 00:00:00 di DateTime Picker dari PHPMaker

Tinggalkan Balasan Batalkan balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Pos-pos Terbaru

  • Server Event Page_Render dan Page_Rendering di PHPMaker, Apa Sih Bedanya?
  • Begini Mudahnya Mengubah Judul Browser Secara Dinamis di PHPMaker 2021
  • Solusi Supaya PreviewRow dan PreviewOverlay Bisa Sama-Sama Berfungsi di PHPMaker 2021
  • Jangan Pernah Lagi Mencampur Kode PHP di Client Script atau Startup Script pada PHPMaker 2021
  • Seperti Ini Mudahnya Menyembunyikan Data Label di Chart dari PHPMaker 2021

Menu

  • Siapa Saya?
  • Web Development
  • PHPMaker
  • Umum
  • Syarat dan Ketentuan
  • Sitemap (Peta Situs)
  • Komentar

Komentar Terbaru

  • Masino Sinaga pada Setting Import Data Berikut Wajib Anda Ketahui Bedanya di PHPMaker 2021
  • Masino Sinaga pada Jangan Pernah Lagi Mencampur Kode PHP di Client Script atau Startup Script pada PHPMaker 2021
  • Masino Sinaga pada Mudahnya Menambahkan Global Function untuk Auto-Update Field di PHPMaker
  • Abu Syifa pada Setting Import Data Berikut Wajib Anda Ketahui Bedanya di PHPMaker 2021
  • Abu Syifa pada Jangan Pernah Lagi Mencampur Kode PHP di Client Script atau Startup Script pada PHPMaker 2021

Situs Terkait

  1. I Love PHPMaker
  2. Situs Resmi PHPMaker
  3. Forum Diskusi PHPMaker
  4. PHPMaker di IlmuKomputer.com
  5. PHPMaker Learning

Baru di PHPMaker?

Baca ini terlebih dulu ...

  1. Ayo Menjadi Web Developer yang Cerdas!
  2. PHPMaker: PHP Code Generator + PHP Framework
  3. Pertanyaan-Pertanyaan yang Paling Sering Diajukan Seputar PHPMaker
  4. Tips buat Anda Pemula yang Baru Mengenal dan Menggunakan PHPMaker
  5. Bacalah Help, Bacalah Help, dan Bacalah Help di PHPMaker!

(c) Masino Sinaga 2009 - 2019 | WordPress | Catat masuk | Kembali ke atas