Memasukkan Data yang Mengandung Tanda Petik Satu pada MySQL dengan PHP
Sebuah catatan lagi.
Tadi pagi setelah saya selesai membuat form input data ke mysql, maka saya coba untuk memasukkan beberapa data. memasukan datapun sukses, dan ketika giliran sebuah kalimat "assalamu'alaikum" script saya mengalami masalah. yup,, masalahnya adalah data tersebut yaitu kalimat "assalamu'alaikum" mengandung tanda petik satu di tengah-tengahnya.
Sayapun mencoba mengetikkan berbagai macam kata kunci pencarian di google. Akhirnya ketemu juga dengan kata kunci yang sudah saya lupakan dan malas saya cari lagi di history chrome, karena saya sudah mendapatkan solusinya. Dan solusinya pun sangat mudah.
Hanya tambahkan script
addslashes(...) atau mysql_real_escape_string(...)
contoh script awal saya yang bermasalah adalah
<form method='post' action='aksi_user.php'>
<table>
<tr><th>nama user</th><td>: <input type='text' name='nama'> </td></tr>
<tr><th>alamat</th><td>: <input type='text' name='alamat'> </td></tr>
<tr><td colspan='2'><input type='submit' value='daftarkan'> </td></tr>
</table>
</form>
berikan nama file dengan script diatas user.php
$nama=$_POST['nama'];
$alamat=$_POST['alamat'];
mysql_query("INSERT INTO `user` (`nama_user` ,
`alamat` )
VALUES ('$nama',
'$alamat'");
berikan nama pada file yang berisikan script diatas dengan aksi_user.php atau yang lain tapi sesuaikan dengan action yang ada pada file user.php.
Sampai disini ketika kita memasukkan data yang tidak ada tanda petik satunya maka tak akan ada masalah. akan tetapi ketika kita memasukkan data yang mengandung data petik satunya, memang seperti tidak ada masalah, karena memang tidak di tampakan oleh browser. Tapi tetap ada masalah, karena data yang mengandung tanda petik tadi tidak masuk ke database mysql. Dan untuk mengatasi masalah itu kita perlu manambahkan fungsi diatas, salah satunya saja cukup. Sehingga script pada file aksi_user.php menjadi sperti berikut:
$nama=addslashes($_POST['nama']);
$alamat=addslashes($_POST['alamat']);
mysql_query("INSERT INTO `user` (`nama_user` ,
`alamat` )
VALUES ('$nama',
'$alamat'");
dan cobalah kembali memasukkan data yang mengandung petik satu ataupun tidak. sudah sukses.
catatan: jika sudah memakai addslashes(..) maka tidak perlu lagi menggunakan mysql_real_escape_string(...) dan sebaliknya.
Tadi pagi setelah saya selesai membuat form input data ke mysql, maka saya coba untuk memasukkan beberapa data. memasukan datapun sukses, dan ketika giliran sebuah kalimat "assalamu'alaikum" script saya mengalami masalah. yup,, masalahnya adalah data tersebut yaitu kalimat "assalamu'alaikum" mengandung tanda petik satu di tengah-tengahnya.
Sayapun mencoba mengetikkan berbagai macam kata kunci pencarian di google. Akhirnya ketemu juga dengan kata kunci yang sudah saya lupakan dan malas saya cari lagi di history chrome, karena saya sudah mendapatkan solusinya. Dan solusinya pun sangat mudah.
Hanya tambahkan script
addslashes(...) atau mysql_real_escape_string(...)
contoh script awal saya yang bermasalah adalah
<form method='post' action='aksi_user.php'>
<table>
<tr><th>nama user</th><td>: <input type='text' name='nama'> </td></tr>
<tr><th>alamat</th><td>: <input type='text' name='alamat'> </td></tr>
<tr><td colspan='2'><input type='submit' value='daftarkan'> </td></tr>
</table>
</form>
berikan nama file dengan script diatas user.php
$nama=$_POST['nama'];
$alamat=$_POST['alamat'];
mysql_query("INSERT INTO `user` (`nama_user` ,
`alamat` )
VALUES ('$nama',
'$alamat'");
berikan nama pada file yang berisikan script diatas dengan aksi_user.php atau yang lain tapi sesuaikan dengan action yang ada pada file user.php.
Sampai disini ketika kita memasukkan data yang tidak ada tanda petik satunya maka tak akan ada masalah. akan tetapi ketika kita memasukkan data yang mengandung data petik satunya, memang seperti tidak ada masalah, karena memang tidak di tampakan oleh browser. Tapi tetap ada masalah, karena data yang mengandung tanda petik tadi tidak masuk ke database mysql. Dan untuk mengatasi masalah itu kita perlu manambahkan fungsi diatas, salah satunya saja cukup. Sehingga script pada file aksi_user.php menjadi sperti berikut:
$nama=addslashes($_POST['nama']);
$alamat=addslashes($_POST['alamat']);
mysql_query("INSERT INTO `user` (`nama_user` ,
`alamat` )
VALUES ('$nama',
'$alamat'");
dan cobalah kembali memasukkan data yang mengandung petik satu ataupun tidak. sudah sukses.
catatan: jika sudah memakai addslashes(..) maka tidak perlu lagi menggunakan mysql_real_escape_string(...) dan sebaliknya.
Comments
Post a Comment