Menggunakan Kad Liar "suka" dalam Penyata Disediakan
Penyataan yang disediakan menawarkan cara yang berkesan untuk melaksanakan pertanyaan SQL dengan menghalang serangan suntikan SQL dan meningkatkan prestasi . Walau bagaimanapun, penyepaduan kad bebas "suka" dengan pernyataan yang disediakan boleh menjadi agak rumit.
Pertimbangkan pertanyaan berikut yang mencari baris dalam jadual "analisis" berdasarkan kata kunci:
PreparedStatement pstmt = con.prepareStatement( "SELECT * FROM analysis WHERE notes like ?"); pstmt.setString(1, notes); ResultSet rs = pstmt.executeQuery();
Untuk menggunakan kad bebas "suka" dengan pertanyaan ini, anda perlu memasukkannya dalam nilai yang terikat pada parameter pernyataan yang disediakan. Hanya menambah "kata kunci%" pada pstmt.setString(1, nota) tidak akan mencukupi.
Sebaliknya, anda boleh melaksanakan awalan, akhiran atau padanan global bergantung pada keperluan anda:
notes = notes .replace("!", "!!") .replace("%", "!%") .replace("_", "!_") .replace("[", "!["); PreparedStatement pstmt = con.prepareStatement( "SELECT * FROM analysis WHERE notes LIKE ? ESCAPE '!'"); pstmt.setString(1, notes + "%");
pstmt.setString(1, "%" + notes);
pstmt.setString(1, "%" + notes + "%");
Ingat untuk melepaskan aksara khas dalam rentetan "nota" menggunakan garis miring ke hadapan () untuk mengelakkannya daripada mengganggu kad liar "suka" cari.
Atas ialah kandungan terperinci Bagaimana untuk menggunakan kad liar \'suka\' dengan berkesan dengan pernyataan yang disediakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!