У меня есть таблица mysql, которая содержит:
folder_id (int(11), auto increment) folder_name (varchar) folder_class(varchar) folder_link (varchar)
То, что я хочу сделать, – это как-то пройти через таблицу и сохранить каждую строку следующим образом:
$packs = array( array( 'Name' => 'DarkUIPack', 'Class' => 'ui', 'Link' => 'http://graphicriver.net/item/dark-minimalist-ui-pack/662762' ), array( 'Name' => 'MinimalistIcons', 'Class' => 'min', 'Link' => 'http://graphicriver.net/item/small-minimalist-icons-pack/670469' ), array( 'Name' => 'BlueMediaIcons', 'Class' => 'blue', 'Link' => 'http://graphicriver.net/item/blue-media-icons-set/705319' ), array( 'Name' => 'MediaIcons', 'Class' => 'med', 'Link' => 'http://graphicriver.net/item/media-icons-set/679835' ), array( 'Name' => 'ToTheTopButtons', 'Class' => 'top', 'Link' => 'http://graphicriver.net/item/to-the-top-buttons/673221' ), array( 'Name' => 'Sunglasses', 'Class' => 'sun', 'Link' => '' ), array( 'Name' => 'RealEstate', 'Class' => 'est', 'Link' => 'http://graphicriver.net/item/simple-real-estate-logo/724697' ), array( 'Name' => 'PhotoStudio', 'Class' => 'std', 'Link' => 'http://graphicriver.net/item/photo-studio-logo/724694' ), array( 'Name' => 'PayDayCity', 'Class' => 'std', 'Link' => '' ), array( 'Name' => 'MoleculeCorp', 'Class' => 'mol', 'Link' => 'http://graphicriver.net/item/molecule-corp-logo/719307' ), array( 'Name' => 'ClubbGX', 'Class' => 'gx', 'Link' => '' ), array( 'Name' => 'AerialVision', 'Class' => 'aer', 'Link' => '' ), array( 'Name' => 'ServiceCompany', 'Class' => 'ser', 'Link' => 'http://graphicriver.net/item/service-company-logo/727091' ), array( 'Name' => 'ElectroTech', 'Class' => 'ele', 'Link' => 'http://graphicriver.net/item/electro-tech-logo/720904' ), array( 'Name' => 'CreativeStudio', 'Class' => 'cre', 'Link' => 'http://graphicriver.net/item/creative-studio-logo/719494' ), array( 'Name' => 'NanoCorp', 'Class' => 'nan', 'Link' => 'http://graphicriver.net/item/nano-corp-logo/719098' ), array( 'Name' => 'RehabPlace', 'Class' => 'reh', 'Link' => '' ), array( 'Name' => 'MyLocalMix', 'Class' => 'mix', 'Link' => '' ), array( 'Name' => 'SevenBySeven', 'Class' => 'sev', 'Link' => '' ), array( 'Name' => 'ComingSoon', 'Class' => 'com', 'Link' => '' ), array( 'Name' => 'AlienIcons', 'Class' => 'aln', 'Link' => 'http://graphicriver.net/item/alien-icons-set/698515' ), array( 'Name' => 'PreloaderPortfolio', 'Class' => 'pre', 'Link' => '' ), array( 'Name' => 'BioTech', 'Class' => 'bio', 'Link' => '' ), array( 'Name' => 'ConstructionCompany', 'Class' => 'con', 'Link' => '' ), array( 'Name' => 'EagleMedia', 'Class' => 'egl', 'Link' => '' ), array( 'Name' => 'ElectronicWays', 'Class' => 'elw', 'Link' => '' ), array( 'Name' => 'EnvironmentalCompany', 'Class' => 'env', 'Link' => '' ), array( 'Name' => 'SecureData', 'Class' => 'sec', 'Link' => 'http://graphicriver.net/item/secure-data-company-logo/907334' ), array( 'Name' => 'ConstructSimple', 'Class' => 'cns', 'Link' => 'http://graphicriver.net/item/simple-construction-company-logo/907538' ), array( 'Name' => 'ConstructRoof', 'Class' => 'cnr', 'Link' => 'http://graphicriver.net/item/construction-company-logo/907549' ) );
где «Имя» соответствует имени папки, «Класс» – папке_класса и «Ссылка» на folder_link.
Я использую это в классе, и класс выглядит так:
class folder { private $connect; public function __construct() { $this->connect = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); if (mysqli_connect_errno()) { $error = true; $message['error'] = true; $message['message'] = mysqli_connect_error(); return json_encode($message); } else { return true; } } public function crtFolder($fldName,$fldClass,$fldLink,$fldPath) { $fldName = preg_replace('/\s+/', '', $fldName); $fldPN = $fldPath."\\".$fldName; $modArray = array(array('1')); if ((!is_dir($fldPN))) { if(mkdir($fldPN,0777,true)) { $sql = "INSERT INTO folders (folder_name,folder_class,folder_link) VALUES (?, ?, ?)"; if($stmt = $this->connect->prepare($sql)) { $stmt->bind_param("sss", $fldName, $fldClass, $fldLink); $stmt->execute(); $stmt->close(); $error = false; $message['error'] = false; $message['message'] = "Folder Created | Data Successfuly Inserted"; return json_encode($message); } else { $error = true; $message['error'] = true; $message['message'] = "Folder Created | Data Failed To Insert"; return json_encode($message); } } else { $error = true; $message['error'] = true; $message['message'] = "Folder Failed To Create"; return json_encode($message); } } else { $error = true; $message['error'] = true; $message['message'] = "Folder Already Exists"; return json_encode($message); } } public function __destruct() { $closeConnection = $this->connect->close(); if($closeConnection) { return true; } }
}
Я показываю класс, потому что я хочу сохранить тот же метод для создания массива, как и другие методы. Потому что я нашел что-то в Google, но он делал массив из нескольких таблиц. У меня только одна таблица.
Напишите ниже данную функцию в свой класс. Надеюсь, это поможет.
public function getTableData(){ $sql = "SELECT * FROM folders"; if($stmt = $this->connect->prepare($sql)) { $stmt->execute(); $stmt->close(); $arrFinalArray = array(); while ($arrFolder = $stmt->fetch()){ $arrFinalArray[] = array( 'Name' => $arrFolder['folder_name'], 'Class' => $arrFolder['folder_class'], 'Link' => $arrFolder['folder_link'] ); } } }
Следуя вашему формату:
if($stmt = $this->connect->prepare($sql)) { $stmt->bind_param("sss", $fldName, $fldClass, $fldLink); $stmt->execute(); $result = array(); while ($stmt->fetch()) { $result[] = array('Name' => $fldName, 'Class' => $fldClass, 'Link' => $fldLink); } print_r($result); }
Он должен работать.
Попробуйте что-то вроде этого:
$result = SOMETHING_FROM_QUERY; $packs = new array(); while ($row = mysql_fetch_assoc($result)) { array_push($packs,array('Name' => $row['folder_name'], 'Class' => $row['folder_class'], 'Link' => $row['folder_link'])); }