// 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
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)); } }