Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Simpan HTML ke dalam database MySQL

String dalam kueri SQL -biasanya- dikelilingi oleh tanda kutip tunggal. Mis.

INSERT INTO tbl (html) VALUES ('html');

Tetapi jika string HTML itu sendiri juga berisi tanda kutip tunggal, itu akan merusak kueri SQL:

INSERT INTO tbl (html) VALUES ('<form onsubmit="validate('foo', 'bar')">');

Anda sudah melihatnya di penyorot sintaks, nilai SQL berakhir tepat sebelum foo dan juru bahasa SQL tidak dapat memahami apa yang terjadi setelahnya. Kesalahan Sintaks SQL!

Tapi itu bukan satu-satunya, itu juga membuat pintu lebar terbuka untuk suntikan SQL (contoh di sini ).

Anda benar-benar perlu membersihkan SQL selama membangun kueri SQL. Cara melakukannya tergantung pada bahasa pemrograman yang Anda gunakan untuk menjalankan SQL. Jika misalnya PHP, Anda memerlukan mysql_real_escape_string() :

$sql = "INSERT INTO tbl (html) VALUES ('" . mysql_real_escape_string($html) . "')";

Alternatif dalam PHP menggunakan pernyataan yang disiapkan , ini akan menangani pelolosan SQL untuk Anda.

Jika Anda menggunakan Java (JDBC ), maka Anda memerlukan PreparedStatement :

String sql = "INSERT INTO tbl (html) VALUES (?)";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, html);

Perbarui :ternyata Anda benar-benar menggunakan Java. Anda harus mengubah kode sebagai berikut:

String sql = "INSERT INTO website (URL, phishing, source_code, active) VALUES (?, ?, ?, ?)";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, URL);
preparedStatement.setString(2, phishingState);
preparedStatement.setString(3, sourceCode);
preparedStatement.setString(4, webSiteState);
preparedStatement.executeUpdate();

Jangan lupa untuk menangani sumber daya JDBC dengan benar. Anda dapat menemukan artikel ini berguna untuk mendapatkan beberapa wawasan bagaimana melakukan hal-hal dasar JDBC dengan cara yang benar. Semoga membantu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menangani Latensi dalam Transaksi MySQL

  2. mysql_connect VS mysql_pconnect

  3. Konfigurasi email dinamis dengan nilai dari database [Laravel]

  4. MySQL CASE untuk memperbarui beberapa kolom

  5. Bagaimana saya bisa memilih * dari tabel di MySQL tetapi menghilangkan kolom tertentu?