Fatal error: Uncaught mysqli_sql_exception: Data too long for column
Kesalahan ini terjadi ketika Anda mencoba memasukkan data yang lebih panjang dari ukuran kolom yang ditentukan di tabel MySQL. Misalnya, jika Anda memiliki tipe data varchar (6), artinya hanya dapat menyimpan 6 karakter. Jika Anda memberikan lebih dari 6 karakter, maka akan muncul kesalahan ini.
Ada beberapa cara untuk mengatasi kesalahan ini, antara lain:
- Mengubah tipe data kolom menjadi yang lebih besar, seperti varchar (255) atau text.
- Mengatur mode MySQL agar tidak menggunakan STRICT². Mode ini merupakan kontrol tambahan dari MySQL untuk menghindari memasukkan data yang tidak valid. Namun, cara ini dapat menyebabkan data yang dimasukkan menjadi terpotong atau hilang.
- Menangkap dan menangani pengecualian mysqli_sql_exception dengan menggunakan blok try-catch. Cara ini memungkinkan Anda untuk mengambil tindakan yang sesuai ketika terjadi kesalahan, seperti memberikan pesan kesalahan yang informatif atau mengubah data yang dimasukkan.
Berikut adalah contoh kode PHP yang menggunakan blok try-catch untuk menangkap dan menangani pengecualian mysqli_sql_exception:
// Koneksi ke database
$mysqli = new mysqli ("localhost", "user", "password", "database");
// Cek apakah ada kesalahan koneksi
if ($mysqli->connect_errno) {
die ("Gagal terhubung ke MySQL: " . $mysqli->connect_error);
}
// Query untuk memasukkan data ke tabel
$sql = "INSERT INTO tabel (kolom) VALUES (?)";
// Siapkan statement yang aman dari serangan SQL injection
$stmt = $mysqli->prepare ($sql);
// Cek apakah statement berhasil disiapkan
if (!$stmt) {
die ("Gagal menyiapkan statement: " . $mysqli->error);
}
// Tentukan data yang akan dimasukkan
$data = "Data yang terlalu panjang untuk kolom";
// Ikutkan data ke statement
$stmt->bind_param ("s", $data);
// Jalankan statement
try {
$stmt->execute ();
echo "Data berhasil dimasukkan";
} catch (mysqli_sql_exception $e) {
// Cek apakah kesalahan disebabkan oleh data yang terlalu panjang
if (str_starts_with ($e->getMessage (), "Data too long for column")) {
// Tampilkan pesan kesalahan
echo "Data yang Anda masukkan terlalu panjang untuk kolom";
// Lakukan tindakan lain yang diperlukan, misalnya memotong data atau meminta input ulang
} else {
// Lempar kembali pengecualian untuk ditangani di tempat lain
throw $e;
}
}
// Tutup statement dan koneksi
$stmt->close ();
$mysqli->close ();
Komentar
Posting Komentar