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

Câu lệnh chuẩn bị MySQLi với truy vấn cập nhật động

Bí quyết là tạo một mảng có chứa các tham số mà bạn muốn liên kết, sau đó với sự trợ giúp của call_user_func_array , bạn có thể chuyển mảng này tới bind_param .

Xem http://www.php.net/ manual / en / function.call-user-func-array.php để biết chi tiết về call_user_func_array .

Mã của bạn có thể giống như sau:

    $para_type="";
    /* $para is the array that later passed into bind_param */
    $para=array($para_type);
    $query = 'UPDATE tickets SET ';

    IF(count($data) != 0) {
        /* Looping all values */

        foreach($data as $k=>$d) {
            $query .= '`'.$d['field'].'` = ? ,';

            $para_type .=$d['type'];

            $para[] = &$data[$k]['value'];
        }

        /* removing last comma */
        $query[(strlen($query)-2)] = '';

        /* adding where */
        $query .= ' WHERE `ticket_id` = ?';
        $para_type .= 'i';
        $para[]=&$ticket_id;

        call_user_func_array(array($stmt, 'bind_param'), $para);

        return true;
    }

Lưu ý & trước tất cả các tham số, nó được yêu cầu bởi bind_param .

Một cách khác mà tôi nghĩ là tốt hơn là sử dụng PDO. Nó nhận tham số được đặt tên và có thể thực hiện liên kết gia tăng.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Loại trừ các trường nhất định khỏi truy vấn SQL SUM

  2. Truy vấn phân cấp trong MySQL

  3. CẬP NHẬT với CHỌN, nó sẽ khóa từng hàng hoặc tất cả các bản ghi đã CHỌN

  4. Mẹo để cung cấp hiệu suất cơ sở dữ liệu MySQL - Phần thứ hai

  5. sử dụng giá trị cột làm tên cột mysql