sql >> Database teknologi >  >> RDS >> Mysql

MySQLi udarbejdet erklæring med dynamisk opdateringsforespørgsel

Tricket er at konstruere et array, der indeholder de parametre, du vil binde, derefter ved hjælp af call_user_func_array , kan du sende dette array til bind_param .

Se http://www.php.net/ manual/da/function.call-user-func-array.php for detaljer om call_user_func_array .

Din kode kan være noget i stil med:

    $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æg mærke til & foran alle parametre er det påkrævet af bind_param .

En anden måde, som jeg synes er bedre, er at bruge PDO. Det tager navngivet parameter og kan lave trinvis binding.




  1. Ændre tidszoneforskydningen på en datotidsforskydningsværdi i SQL Server (T-SQL)

  2. Undslippende jokertegn i LIKE

  3. Hvordan laver man en stille installation af mysql i inno setup?

  4. Databasedesign til udvikling af 'Quiz' webapplikation ved hjælp af PHP og MySQL