Я добился большого прогресса в этом в некоторых областях, но борется с другими. Вот цель: существующий сайт WordPress используется клиентом. Они хотят, чтобы администратор пользовался доступом к одной из интерфейсных страниц с возможностью загрузки, где они могут загружать CSV (несколько раз в день). Затем, при доступе к другим страницам портала, будут отображаться соответствующие поля из таблиц (в зависимости от пользователя). Файлы CSV имеют 201 поле, одинаковый порядок каждый раз. В моем php, я setup успешное соединение и закодированные 201 переменные как так:
<?php $server = "localhost"; $user = "root"; $pw = "root"; $db = "uwsTest"; $connect = mysqli_connect($server, $user, $pw, $db); if ($connect->connect_error) { die("Connection failed: " . $conn->connect_error); }else{ echo'success!'; } if(isset($_POST['submit'])) { $coldata = array(); $coldata['orderNumber'] = $filesop[0]; $coldata['null'] = $filesop[1]; $coldata['workOrderNum'] = $filesop[2]; $coldata['lowSideMIUNum'] = $filesop[3]; $coldata['highSideMIUNum'] = $filesop[4]; $coldata['accountNum'] = $filesop[5]; $coldata['custName'] = $filesop[6];
Опять же, эта линия продолжается через [200]. На следующей части я буду вставлять определенные переменные, чтобы сэкономить место. Здесь я индексирую те таблицы, в которые будут принадлежать определенные переменные.
$table_cols = array(); /*staging*/ $table_cols[0] ="null,orderNumber,null,workOrderNum,lowSideMIUNum,highSideMIUNum,accountNum /*clients*/ $table_cols[1] ="orderNumber,null,workOrderNum,lowSideMIUNum,highSideMIUNum,accountNum,custName /*meters*/ $table_cols[2] ="workOrderNum,lowSideMIUNum,highSideMIUNum,accountNum,custName,address /*tests*/ $table_cols[3] ="workOrderNum,lowSideMIUNum,highSideMIUNum,accountNum,custName,address /*costs*/ $table_cols[4] ="workOrderNum,onsiteSurveyTestCost,onsiteSurveyTestRepairCost,offsiteSurveyTestCost /*workorders*/ $table_cols[5] ="workOrderNum,lowSideMIUNum,highSideMIUNum,accountNum,custName
И теперь SQL-запрос:
$tablenames = array("staging","clients","meters","tests","costs","workorders"); for($tableno = 0;$tableno < sizeof($tablenames);$tableno++){ $q = ""; $q .= "INSERT INTO ".$tablenames[$tableno]." (".$table_cols[$tableno].") VALUES ("; $cols = explode("," ,$table_cols); $data = array(); foreach($col as $key => $fldname) { $data[] = "'".$coldata[$fldname]."'"; } $q .= implode(",",$data).");"; } echo'File submitted';
Когда я запускаю это, я не получаю ошибок PHP. Я запускаю его на Mamp, загружаю CSV через форму отправки html, он вызывает php, а затем на моей странице индекса php я получаю сообщения для успешного подключения и успешной вставки. Однако, когда я смотрю в Workbench MySQL и выбираю из таблиц, они пусты. Моя промежуточная таблица была создана только с одним столбцом для первичного ключа, но я не знаю, будет ли этот код отправлять все без установленных столбцов / полей в таблицах базы данных. В моем массиве table_cols под опцией 'staging' (index [0]) у меня на самом деле есть все 201 переменные, так как вся форма будет размещена в этой таблице только для того, чтобы быть в безопасности. Я что-то пропустил здесь, почему он не загружается в базу данных?