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

PHP PDO bindParam cho biến / chuỗi được sử dụng cho câu lệnh IN ...?

Những gì lừa dối đã nói trong các bình luận là chính xác. Đây là một cách mà tôi đã làm trước đây.

Về cơ bản, bạn tạo IN một phần của chuỗi sql bằng cách lặp lại các giá trị mảng và thêm tên được liên kết vào.

$allow = array( 'red', 'blue' );

$sql = sprintf(
    "Select * from colors where type in ( %s )",
    implode(
        ',',
        array_map(
            function($v) {
                static $x=0;
                return ':allow_'.$x++;
            },
            $allow
        )
    )
);

Điều này dẫn đến Select * from colors where type in ( :allow_0,:allow_1 )

Sau đó, chỉ cần lặp lại $allow mảng và sử dụng bindValue để liên kết từng biến.

foreach( $allow as $k => $v ){
    $stmnt->bindValue( 'allow_'.$k, $v );
}

Tôi đã thêm điều này trước khi nhận ra sự lừa dối được liên kết với một câu hỏi đưa ra một ví dụ tương tự. Tôi để điều này ở đây vì nó chỉ ra cách thực hiện với các biến liên kết được đặt tên chứ không phải? S



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để lưu trữ số điện thoại trên cơ sở dữ liệu MySQL?

  2. CHỌN chỉ các hàng chỉ chứa các ký tự chữ và số trong MySQL

  3. Cách tiếp cận tốt để quản lý kết nối db trong ứng dụng Python của Google Cloud SQL (GAE) là gì?

  4. Mô phỏng chức năng lag trong MySQL

  5. Độ dài tối đa cho văn bản kiểu MySQL