PHP - формирование списка из SQL-запроса
Есть MySQL-таблица, допустим, с 10 столбцами, имеющими названия а1, а1, ...., а10. Значения в них записываются 1 или 0.
Мне нужно делать запрос к этой таблице, получать одну строку и формировать список неких слов, у которых значение = 1.
Например, строка с id=2 имеет значения [а1, ......, а10]: 1,1,0,1,0,0,0,0,1,0
- Слово 1 = а1
- Слово 2 = а2
- ......
- Слово 10 = а10
Мне нужно получить список вида:
- Слово 1
- Слово 2
- Слово 4
- Слово 9
Использую следующий код, но пока получаю null:
$sql = "SELECT * FROM table_name WHERE id = 2";
$result = $conn->query($sql);
while($row = $result->fetch_assoc()) {
$words = [
'a1' => 'Слово 1',
'a2' => 'Слово 2',
'a3' => 'Слово 3',
'a4' => 'Слово 4',
'a5' => 'Слово 5',
'a6' => 'Слово 6',
'a7' => 'Слово 7',
'a8' => 'Слово 8',
'a9' => 'Слово 9',
'a10' => 'Слово 10',
];
$rrr = "";
foreach($words as $key => $value){
if(isset($$key)) {
$rrr .= "- $value<br>";
}
}
};
print($rrr); // выводит пустую строку :(
Чего-то в коде не хватает...
Ответы (1 шт):
Автор решения: Denis640Kb
→ Ссылка
Пример с использованием PDO (настоятельно Вам рекомендую)
Файл подключения к БД dbconnect.php
<?php
try {
$dbh = new PDO('mysql:dbname=dbname;host=localhost;charset=utf8', 'name', 'password');
} catch (PDOException $e) {
die($e->getMessage());
}
?>
Основной файл main.php
<?php
include 'dbconnect.php'; // Подключение к БД
$words = [
'a1' => 'Слово 1',
'a2' => 'Слово 2',
'a3' => 'Слово 3',
'a4' => 'Слово 4',
'a5' => 'Слово 5',
'a6' => 'Слово 6',
'a7' => 'Слово 7',
'a8' => 'Слово 8',
'a9' => 'Слово 9',
'a10' => 'Слово 10',
];
$sql = "SELECT * FROM temp";
$req = $dbh->prepare($sql);
$req->execute();
$array = $req->fetchAll(PDO::FETCH_ASSOC);
$rrr = '';
foreach ($array as $arr){
foreach ($arr as $key=>$value) {
if (array_key_exists($key, $words)) { // ищем ключ в массиве
if($value == '1') { // Проверяем равно ли значение единице
$rrr .= '-' . $words[$key] . '<br>';
}
}
}
}
print_r($rrr);