 |
|
การใช้ prepare แบบที่เขียน ไม่ได้ประโยชน์ ในเรื่อง sql injection เพราะ data request ไม่ได้ถูกแปลงค่า
ต้อง bind parameter เพื่อจะได้ทำการตรวจสอบ และ แปลงค่า ก่อน
ส่วนคำสั่ง where like ให้รวม field ที่ใช้ตรวจสอบ เหมือนกันก่อนตรวจสอบ จะได้สั้นลง
เปลี่ยนเป็น
Code (PHP)
$param = "%{$bookKey}%";
$sql="SELECT * FROM book B INNER JOIN categories C on B.cat_id = C.cat_id
WHERE concat(B.book_nameTH,'|', B.book_nameEN,'|', B.book_aut1,'|', B.book_aut2,'|', B.book_aut3,'|', B.book_ISBN,'|', B.book_id,'|', B.book_ta) Like ? ";
$select_stmt = $conn->prepare( $sql);
$select_stmt->bind_param('s', $param);
$select_stmt->execute();
แต่จะว่าไป แค่นี้ยังถือว่าสั้นนะครับ 55555
ถ้าไปเจอ join กัน 10 ตาราง ยาวกว่า 1 หน้ากระดาษ a4 ไม่ตายเหรอ
|
 |
 |
 |
 |
Date :
2019-02-19 07:01:54 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |