0) { $keys = array_keys($data[0]); $query = 'INSERT INTO ' . $table . ' (' . implode(', ', array_map(function($u) { return "`$u`"; }, $keys)) . ')'; $query .= "\nSELECT " . implode(', ', array_map(function($g) { return "a.$g"; }, $keys)) . ' FROM ('; $query .= implode("\n UNION ALL \n", array_map(function($w) use ($keys) { $selectQuery = 'SELECT ' . implode(', ', array_map(function($q) use ($w) { if ($w[$q] !== null) { return '"' . addslashes($w[$q]) . "\" `$q`"; } else { return "\"-\" `$q`"; } }, $keys)); return $selectQuery; }, $data)); $query .= ') a'; if (is_array($wht)) { $query .= ' LEFT JOIN ' . $table . ' ON ' . implode(' AND ', array_map(function($whtx) use($table) { return " $table.$whtx = a.$whtx "; }, $wht)); $query .= ' WHERE ' . implode(' AND ', array_map(function($whtx) use($table) { return " $table.$whtx IS NULL "; }, $wht)); } return $query; } else { return []; } } }