Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Định dạng mảng PHP cho mệnh đề SQL IN

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 ) . '\'';
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP Không có cơ sở dữ liệu nào được chọn

  2. Cách tốt nhất để lưu trữ và truy xuất các từ đồng nghĩa trong cơ sở dữ liệu mysql

  3. Truy vấn MySQL không được chèn khi biến PHP chứa dấu nháy đơn

  4. Làm cách nào để xem chuỗi lệnh khi sử dụng các tham số MySqlCommand?

  5. Lỗi khi thả cơ sở dữ liệu (Không thể rmdir '.test \', errno:17)