Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQLi przygotowało oświadczenie z dynamicznym zapytaniem o aktualizację

Sztuką jest skonstruowanie tablicy zawierającej parametry, które chcesz powiązać, a następnie za pomocą call_user_func_array , możesz przekazać tę tablicę do bind_param .

Zobacz http://www.php.net/ manual/en/function.call-user-func-array.php aby uzyskać szczegółowe informacje na temat call_user_func_array .

Twój kod może wyglądać tak:

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

Zwróć uwagę na & przed wszystkimi parametrami, jest to wymagane przez bind_param .

Innym sposobem, który moim zdaniem jest lepszy, jest użycie PDO. Pobiera nazwany parametr i może wykonywać wiązanie przyrostowe.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę uzyskać dostęp do wiersza poleceń MySQL za pomocą XAMPP dla Windows?

  2. Najlepszy sposób na przechowywanie wiadomości czatu w bazie danych?

  3. Jak przenieść model między dwiema aplikacjami Django (Django 1.7)

  4. Wybierz rekordy bieżącego miesiąca mysql z kolumny sygnatury czasowej

  5. MySQL:nie można uzyskać dostępu do konta root