Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQLi подготвено изявление с динамична заявка за актуализиране

Номерът е да се създаде масив, който съдържа параметрите, които искате да свържете, след което с помощта на call_user_func_array , можете да предадете този масив на bind_param .

Вижте http://www.php.net/ manual/en/function.call-user-func-array.php за подробности относно call_user_func_array .

Вашият код може да бъде нещо като:

    $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;
    }

Обърнете внимание на & пред всички параметри се изисква от bind_param .

Друг начин, който според мен е по-добър, е да използвате PDO. Той приема именуван параметър и може да извършва инкрементално свързване.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Не мога да отварям и заключвам таблици с привилегии:Таблица 'mysql.user' не съществува

  2. Има ли драйвер за mysql на nodejs, който поддържа съхранени процедури?

  3. Фатална грешка:Използване на $this, когато не е в контекста на обекта

  4. MySQL автоматично увеличаване на базата на група

  5. MySQL:НЕ ХАРЕСВА