[java ee]Thắc mắc về "+ +" trong câu truy vấn mysql

SoLuuHuong

New Member
9/3/15
2
0
0
30
Mình đang tìm hiểu về java, tới phần database có câu truy vấn dùng để kiểm tra email đã tồn tại hay chưa.
public boolean checkEmail(String email) {
Connection connection = DBConnect.getConnection();
String sql = "SELECT * FROM users WHERE user_email = '" + email + "'";
}

WHERE user_email = ' " + email + " '
cho mình hỏi là dấu + + có tác dụng gì trong này. Tại mình đang tìm hiểu tới phần này mà google không biết từ khóa nào để tra.

Cảm ơn các bạn đã đọc !
 

JackV

Administrator
Staff member
Dấu + để bên ngoài dấu ngoặc kép dùng để nối một biến,

Nếu bạn WHERE user_email = ' " + email + " ' với biến email = "abc@gmail.com" thì câu lệnh đó sẽ thành
Code:
WHERE user_email = 'abc@gmail.com'
Nếu bạn không dùng dấu + thì k để dấu ngoặc kép 2 bên dấu + nó sẽ thành WHERE user_email = 'email' khi đó biến email của bạn có giá trị gì thì câu lệnh cũng là
Code:
WHERE user_email = 'email'
Vậy việc nối như thế thì cho phép bạn gắn giá trị email động cho câu lệnh SQL
 
  • Like
Reactions: SoLuuHuong

badboy3283

Active Member
20/10/11
294
89
28
District BT, HCM City
Append parameter vào thẳng chuổi query là con đường dẫn hacker đến nhà theo cách injection query: search injection để biết là gì

Phải escape dấu ' trước:

Code:
private static StringBuilder escape(String str, StringBuilder sb) {
        char[] chars = str.toCharArray();
        for (char c : chars) {
            if (c == '\'') {
                sb.append("''");
            } else {
                sb.append(c);
            }
        }
        return sb;
    }
 

SoLuuHuong

New Member
9/3/15
2
0
0
30
Thật sự cám ơn bác ad và bác badboy đã giúp mình hiểu vấn đề :x
Lên stackoverflow tra mà cũng không biết phải tra thế nào để ra mấy câu này, hi.