Example #1
0
            //    continue;
            //}

            //
            // Si fa il backup delle sole tabelle della gestione in corso!
            //
            continue;
        }
        //
        // creazione della struttura della tabella corrente.
        //
        echo "DROP TABLE IF EXISTS `".$nome_tabella."`;\n";
        createTable($nome_tabella);
        // riempimento della tabella corrente
        $field_results = gaz_dbi_query ("select * from " . $nome_tabella);
        $field_meta=gaz_dbi_get_fields_meta($field_results);
        if (gaz_dbi_num_rows($field_results)>0){
              echo "LOCK TABLES `".$nome_tabella."` WRITE;\n";
              $head_query_insert = "INSERT INTO `" . $nome_tabella . "` ( " ;
              for ($j = 0; $j < $field_meta['num']; $j++) {
                  $head_query_insert .="`".$field_meta['data'][$j]->name."`,";
              }
              // elimina l'ultima virgola dalla stringa (se esiste)
              $head_query_insert = preg_replace("/,$/",'', $head_query_insert);
              //
              $head_query_insert .= ") VALUES (";
              $query_insert = $head_query_insert;
              $c=0;
              while ($val = gaz_dbi_fetch_row($field_results)) {
                $c++;
                if ($c==50){ //ogni 50 righi viene riscritto l'head dell'inserimento
Example #2
0
function gaz_dbi_table_update($table, $id, $newValue)
{
    /*
     * $table - il nome della tabella all'interno dell'array $gTables
     * $id - stringa con il valore del campo "codice" da aggiornare o array(0=>nome,1=>valore,2=>nuovo_valore)
     * $newValue - array associativo del tipo nome_colonna=>valore con i valori da inserire
     */
    global $link, $gTables;
    $field_results = gaz_dbi_query("SELECT * FROM " . $gTables[$table]);
    $field_meta = gaz_dbi_get_fields_meta($field_results);
    $query = "UPDATE " . $gTables[$table] . ' SET ';
    $first = true;
    $quote_id = "'";
    for ($j = 0; $j < $field_meta['num']; $j++) {
        if (isset($newValue[$field_meta['data'][$j]->name])) {
            $query .= $first ? $field_meta['data'][$j]->name . " = " : ", " . $field_meta['data'][$j]->name . " = ";
            $first = false;
            if ($field_meta['data'][$j]->blob && !empty($newValue[$field_meta['data'][$j]->name])) {
                $query .= '0x' . bin2hex($newValue[$field_meta['data'][$j]->name]);
            } elseif ($field_meta['data'][$j]->numeric && $field_meta['data'][$j]->type != 'timestamp') {
                $query .= floatval($newValue[$field_meta['data'][$j]->name]);
            } else {
                $elem = addslashes($newValue[$field_meta['data'][$j]->name]);
                // risolve il classico problema dei caratteri speciali per inserimenti in SQL
                $elem = preg_replace("/\\\\'/", "''", $elem);
                //cambia lo backslash+singlequote con 2 singlequote come fa phpmyadmin.
                $query .= "'" . $elem . "'";
            }
            //per superare lo STRICT_MODE del server non metto gli apici ai numerici
            if (is_array($id) && $field_meta['data'][$j]->name == $id[0] && $field_meta['data'][$j]->numeric || is_string($id) && $field_meta['data'][$j]->name == 'codice' && $field_meta['data'][$j]->numeric) {
                $quote_id = '';
            }
        } elseif ($field_meta['data'][$j]->name == 'adminid') {
            //l'adminid non lo si deve passare
            $query .= ", adminid = '" . $_SESSION['Login'] . "'";
        }
    }
    //   se in $id c'è un array uso il nome del campo presente all'index [0] ed il valore dell'index [1],
    //   eventualmente anche l'index [2] per il nuovo valore del codice che quindi verrà modificato
    if (is_array($id)) {
        if (isset($id[2])) {
            $query .= ", {$id['0']} = {$quote_id}{$id['2']}{$quote_id}";
        }
        $query .= " WHERE {$id['0']} = {$quote_id}{$id['1']}{$quote_id}";
    } else {
        //altrimenti uso "codice"
        $query .= " WHERE codice = {$quote_id}{$id}{$quote_id}";
    }
    $result = mysqli_query($link, $query);
    if (!$result) {
        die("Error gaz_dbi_table_update:<b> {$query} </b>" . mysqli_error($link));
    }
}