Có một cách tốt hơn
Bạn đề cập trong các nhận xét rằng bạn đang sử dụng CodeIgniter. Trừ khi bạn đang làm một thứ gì đó cực kỳ phức tạp, không có lý do thực tế nào bạn nên tạo các truy vấn tự nấu tại nhà khi bạn có where_in
được tích hợp sẵn.
Và nếu điều đó không hiệu quả, thì có một cách tốt nhất là escape
.
Được rồi, bạn có hầu hết mọi người nói rằng bạn cần báo giá các mặt hàng và đang cung cấp cho bạn điều này:
function createInClause($arr)
{
return '\'' . implode( '\', \'', $arr ) . '\'';
}
nhưng điều đó thực sự không đủ nếu bạn có khả năng nhập thông tin có vấn đề (chẳng hạn như '); DROP TABLE STUDENTS; --
. Để bảo vệ khỏi điều đó, bạn cần đảm bảo rằng bạn kiểm tra SQL injection:
function createInClause($arr)
{
$tmp = array();
foreach($arr as $item)
{
// this line makes sure you don't risk a sql injection attack
// $connection is your current connection
$tmp[] = mysqli_escape_string($connection, $item);
}
return '\'' . implode( '\', \'', $tmp ) . '\'';
}