function write_data_mysql($table_name) { global $db; $sql = "SELECT *\n\t\t\tFROM {$table_name}"; $result = mysql_unbuffered_query($sql, $db->db_connect_id); if ($result != false) { $fields_cnt = mysql_num_fields($result); // Get field information $field = array(); for ($i = 0; $i < $fields_cnt; $i++) { $field[] = mysql_fetch_field($result, $i); } $field_set = array(); for ($j = 0; $j < $fields_cnt; $j++) { $field_set[] = $field[$j]->name; } $search = array("\\", "'", "", "\n", "\r", "", '"'); $replace = array("\\\\", "\\'", '\\0', '\\n', '\\r', '\\Z', '\\"'); $fields = implode(', ', $field_set); $sql_data = 'INSERT INTO ' . $table_name . ' (' . $fields . ') VALUES '; $first_set = true; $query_len = 0; $max_len = get_usable_memory(); while ($row = mysql_fetch_row($result)) { $values = array(); if ($first_set) { $query = $sql_data . '('; } else { $query .= ',('; } for ($j = 0; $j < $fields_cnt; $j++) { if (!isset($row[$j]) || is_null($row[$j])) { $values[$j] = 'NULL'; } else { if ($field[$j]->numeric && $field[$j]->type !== 'timestamp') { $values[$j] = $row[$j]; } else { $values[$j] = "'" . str_replace($search, $replace, $row[$j]) . "'"; } } } $query .= implode(', ', $values) . ')'; $query_len += strlen($query); if ($query_len > $max_len) { $this->flush($query . ";\n\n"); $query = ''; $query_len = 0; $first_set = true; } else { $first_set = false; } } mysql_free_result($result); // check to make sure we have nothing left to flush if (!$first_set && $query) { $this->flush($query . ";\n\n"); } } }
function write_data_mysql($table_name, $start = 0, $limit = ROWS_PER_STEP, $complete_insert = true, $extended_insert = false, $compact_line_breaks = false) { global $db; $start = $start <= 0 ? 0 : (int) $start; $limit = $limit <= 0 ? 0 : (int) $limit; $limit_sql = ''; if (!empty($limit)) { $limit_sql = ' LIMIT ' . $start . ', ' . $limit; } $sql = "SELECT * FROM " . $table_name . $limit_sql; $result = mysql_unbuffered_query($sql, $db->db_connect_id); if ($result != false) { $fields_cnt = mysql_num_fields($result); // Get field information $field = array(); for ($i = 0; $i < $fields_cnt; $i++) { $field[] = mysql_fetch_field($result, $i); } $field_set = array(); for ($j = 0; $j < $fields_cnt; $j++) { $field_set[] = $field[$j]->name; } $search = array("\\", "'", "", "\n", "\r", "", '"'); $replace = array("\\\\", "\\'", '\\0', '\\n', '\\r', '\\Z', '\\"'); $fields = implode(', ', $field_set); $sql_data = 'INSERT INTO ' . $table_name . ' '; if ($complete_insert) { $sql_data .= '(' . $fields . ') VALUES '; } else { $sql_data .= 'VALUES '; } $first_set = true; $query = ''; $query_len = 0; $max_len = get_usable_memory(); $rows_cnt = 0; while ($row = mysql_fetch_row($result)) { $values = array(); if ($first_set || !$extended_insert) { $query .= $sql_data . ($extended_insert && !$compact_line_breaks ? "\n" : '') . '('; } else { $query .= ',' . (!$compact_line_breaks ? "\n" : '') . '('; } for ($j = 0; $j < $fields_cnt; $j++) { if (!isset($row[$j]) || is_null($row[$j])) { $values[$j] = 'NULL'; } elseif ($field[$j]->numeric && $field[$j]->type !== 'timestamp') { $values[$j] = $row[$j]; } else { $values[$j] = "'" . str_replace($search, $replace, $row[$j]) . "'"; } } $query .= implode(', ', $values) . ')'; if (!$extended_insert) { $query .= ';' . "\n"; } $query_len += strlen($query); if ($query_len > $max_len) { if ($extended_insert) { $query .= ';' . "\n"; } $this->flush($query); $query = ''; $query_len = 0; $first_set = true; } else { $first_set = false; } $rows_cnt++; } mysql_free_result($result); // check to make sure we have nothing left to flush if (!$first_set && $query) { if ($extended_insert) { $query .= ';' . "\n"; } $this->flush($query . "\n\n"); } return $rows_cnt; } return false; }