В чем проблема sql запроса?
Я достаю массив с данными из sql запроса, то есть хочу получить по нему данные определенных юзеров, foreachем создаю файлы excel с юзерами, помещаю их в архив, затем скачиваю его(архив c excel юезров). ..так вот.. Как я говорил ^ ранее, я достаю только некоторые учетные записи по WHERE, но почему-то вместо к примеру 6 таких найденых записей, он скачивает все 10.000 учеток
вот код:
if(isset($_POST['EXCEL_DOWNLOAD'])) {
require_once 'PHPExcel/Classes/PHPExcel.php';
function getUserses() {
global $link;
$data = array();
if(!empty($_POST['phone'])) {
$data[] = "`phone`='".$_POST['phone']."'";
}
if(!empty($_POST['name'])) {
$data[] = "`name`='".$_POST['name']."'";
}
if(!empty($_POST['surname'])) {
$data[] = "`surname`='".$_POST['surname']."'";
}
if(!empty($_POST['region'])) {
$data[] = "`filial_id`='".$_POST['region']."'";
}
if(!empty($_POST['parent'])) {
$data[] = "`parent_id`='".$_POST['parent']."'";
}
if(count($data) > 0)
{
$sql= "SELECT * FROM `users` WHERE ".implode(' AND ', $data);
}
else {
$sql= "SELECT * FROM `users`";
}
$res=mysqli_query($link, $sql);
$users=mysqli_fetch_all($res, MYSQLI_ASSOC);
return $users;
}
$users = getUserses();
$zip = new ZipArchive();
$zip->open("archive_excel/archive.zip", ZIPARCHIVE::CREATE);
foreach($users as $user) {
$objExcel = new PHPExcel();
$objExcel
->setActiveSheetIndex(0)
->setCellValue('A1', 'ID')
->setCellValue('B1', $user['id'])
->setCellValue('A2', 'ФИО')
->setCellValue('B2', $user['surname'] . " " . $user['name'] . " " . $user['thirdname'])
->setCellValue('A3', 'ID-Пригласителя')
->setCellValue('B3', $user['parent_id'])
->setCellValue('A4', 'Номер')
->setCellValue('B4', $user['phone'])
->setCellValue('A5', 'Регион')
->setCellValue('B5', $user['name'])
->setCellValue('A6', 'Баланс')
->setCellValue('B6', $user['bonus_1'])
->getColumnDimension('B')->setWidth(50);
$objWriter = PHPExcel_IOFactory::createWriter($objExcel, 'Excel5');
$objWriter->save('archive_excel/'.$user['id'].'.xls');
$retFile = $zip->addFile("archive_excel/".$user['id'].'.xls');
}
$zip->close();
foreach($users as $user) {
unlink('archive_excel/'.$profile['id'].'.xls');
}
$file_name= "archive_excel/archive.zip";
header("Content-Length: ".filesize($file_name));
header("Content-Disposition: attachment; filename=".$file_name);
header("Content-Type: application/x-force-download; name=\"".$file_name."\"");
readfile($file_name);
}
в чем проблема?
Ответы (1 шт):
Автор решения: delikates
→ Ссылка
$query = "SELECT * FROM `users`";
foreach( ['name' => 'name', 'surname' => 'surname', 'filial_id' => 'region', 'parent_id' => 'parent'] as $key => $value ) {
if ( isset( $_POST[ $value ] ) && trim( $_POST[ $value ] ) != '' ) {
$query .= ( !preg_match("/ WHERE/", $query) ? " WHERE" : "" );
$query .= ( !preg_match("/ WHERE (\S+)/", $query) ? " AND" : "" );
$query .= "`".$key."`='".$value."'";
}
}
Немного упростил Ваш код.