У меня есть код, который загружает CSV-файл в указанную папку, но он не обновляет базу данных.Codeigniter CSV upload then explode
public function do_upload()
{
$csv_path = realpath(APPPATH . '/../assets/uploads/CSV/');
$config['upload_path'] = $csv_path;
$config['allowed_types'] = '*'; // All types of files allowed
$config['overwrite'] = true; // Overwrites the existing file
$this->upload->initialize($config);
$this->load->library('upload', $config);
if (! $this->upload->do_upload('userfile'))
{
$error = array('error' => $this->upload->display_errors());
$this->layout->buffer('content', 'program/upload', $error);
$this->layout->render();
}
else
{
$image_data = $this->upload->data();
$fname = $image_data['file_name'];
$fpath = $image_data['file_path'].$fname;
$fh = fopen($fpath, "r");
$insert_str = 'INSERT INTO wc_program (JobRef, Area, Parish, AbbrWorkType, WorkType, Timing, TrafficManagement, Location, Duration, Start, Finish) VALUES '."\n";
if ($fh) {
// Create each set of values.
while (($csv_row = fgetcsv($fh, 2000, ',')) !== false) {
foreach ($csv_row as &$row) {
$row = strtr($row, array("'" => "\'", '"' => '\"'));
}
$insert_str .= '("'
// Implode the array and fix pesky apostrophes.
.implode('","', $csv_row)
.'"),'."\n";
}
// Remove the trailing comma.
$insert_str = rtrim($insert_str, ",\n");
// Insert all of the values at once.
$this->db->set($insert_str);
echo '<script type="text/javascript">
alert("Document successfully uploaded and saved to the database.");
location = "program/index";
</script>';
}
else {
echo '<script type="text/javascript">
alert("Sorry! Something went wrong please proceed to try again.");
location = "program/upload";
</script>';
}
}
}
Когда я запускаю var_dump ($ fh); он показывает: ресурс (89) типа (поток)
Когда я бегу var_dump($fpath)
показывает: string(66) "/Applications/MAMP/htdocs/site/assets/uploads/CSV/wc_program.csv"
Так что это все закачки, но что случилось с ним не обновляет базу данных? Я пробовал все виды изменения метода fopen
, но до сих пор не радуюсь, мне действительно нужно его добавить в базу данных, а запрос на ввод и задание запроса должно сделать трюк, но это не так.
Любая помощь очень ценится!
У вас установлен 'db_debug'' TRUE' в 'config/database.php'? В нем будут отображаться ошибки базы данных. Вы также можете попробовать выполнить эхо-запрос '$ this-> db-> last_query()', чтобы увидеть последний запрошенный запрос. –