169 похожих чатов

Всем привет, установил php8.2.7 и 10.5.20-MariaDB создал БД openair

и таблицу с 2 столбцами name (varchar) и description(text).
сделал html страницу с названием стран, хочу чтоб при нажатии на страну появлялось её описание из БД.
<!DOCTYPE html>
<html>
<head>
<title>Список стран</title>
<style>
.country-block {
border: 1px solid #ccc;
padding: 10px;
margin-bottom: 10px;
}
.country-link {
cursor: pointer;
color: blue;
text-decoration: underline;
}
</style>
</head>
<body>
<div class="country-block">
<h2>Страны:</h2>
<ul>
<li><a href="#" onclick="loadCountryDescription('Дания')">Дания</a></li>
<li><a href="#" onclick="loadCountryDescription('Норвегия')">Норвегия</a></li>
<li><a href="#" onclick="loadCountryDescription('Швеция')">Швеция</a></li>
<li><a href="#" onclick="loadCountryDescription('Австрия')">Австрия</a></li>
<li><a href="#" onclick="loadCountryDescription('Германия')">Германия</a></li>
</ul>
</div>
...

php
<?php
// Подключение к базе данных
$servername = "localhost";
$username = "root";
$password = "qwerty";
$dbname = "openair";
$conn = new mysqli($servername, $username, $password, $dbname);

// Проверка соединения
if ($conn->connect_error) {
die("Ошибка подключения: " . $conn->connect_error);
}

// Получение имени страны из параметра запроса
$countryName = $_GET['country'];
//$countryName = 'Норвегия';

// Подготовка и выполнение запроса к базе данных
$sql = "SELECT description FROM countries WHERE name = '$countryName'";
$result = $conn->query($sql);

// Вывод результата запроса для проверки
if ($result) {
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
echo "Описание страны из базы данных: " . $row['description'];
} else {
echo "Описание не найдено 1";
}
} else {
echo "Ошибка выполнения запроса: " . $conn->error;
}

// Проверка результатов запроса и вывод описания страны
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
echo $row['description'];
} else {
echo "Описание не найдено 2";
}

$conn->close();
?>
При нажатии на странице по названию страны выводит : Описание не найдено 1 Описание не найдено 2
Подскажите как сделать такой функционал?
Дело имею с php и БД первый раз, возможно не учел какие-то нюансы.

10 ответов

30 просмотров

1. используй bind параметров запроса. читай про sql инъекции. 2. если у тебя ошибка - наверное надо останавливать выполнение. у тебя просто идем дальше. 3. смотри какой запрос уходит в базу и балуйся.

Sergey P
1. используй bind параметров запроса. читай про sq...

та у него такой запрос и уходит в бд SELECT description FROM countries WHERE name = '$countryName'

SDmitr
та у него такой запрос и уходит в бд SELECT descri...

😑 И что? Как это тебя избавляет он инъекции через переданные данные в переменую, вставленной напрямую в sql запрос?

Антон Гурский
😑 И что? Как это тебя избавляет он инъекции через ...

так я и не сказал что инъекций не будет) просто уточнил что запрос и так ясно какой уходит)

SDmitr
так я и не сказал что инъекций не будет) просто ут...

а вот то, что структура таблицы очень странная и вообще подход это да)) видимо человек не понимает, что лучше добавить поле id и делать выборку по нему... ну то такое)

SDmitr
а вот то, что структура таблицы очень странная и в...

Причём тут id? Это автоинкремент, для чего он тебе в запросах? Он нужен для вставок данных просто. А на то что ты пишешь в WHERE как значение выборки, тебе на этот столбец надо вешать ключ индексации

Антон Гурский
Причём тут id? Это автоинкремент, для чего он тебе...

1. с какой это радости id обязательно инкремент? 2. поиск по int работает гораздо быстрее и менее затратно чем по varchar .. isn't it?

SDmitr
1. с какой это радости id обязательно инкремент? 2...

id не нормально использовать вообще для своей какой-то информации, если не понимаешь, я спорить не собираюсь

Антон Гурский
id не нормально использовать вообще для своей како...

т.е.? правильно ли я понимаю, что правильно делать выборку по полю типа varchar? с индексом все хорошо будет?) может тогда вообще фултекст зафигачить? а чё?)

SDmitr
т.е.? правильно ли я понимаю, что правильно делать...

ставю ключ индексации и всё и сравнивай по целому значению, без всяких sbustring и прочего

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Не ну фпц - это уже просто троллинг какой-то. Элементарный код нельзя собрать. ЧЯДНТ? program Project1; {$mode delphi} uses SysUtils, Classes, Generics.Collections; var...
Peter
4
а где есть mysql cloud кроме яндекс-клауд?
Oleg Nosov
13
Есть ли смысл устраиваться на 1с ? Даст это плюс в дальнейшем трудоустройстве на php? Просто у меня в городе вакансий на пхп нету. Или лучше удаленно искать. Опыта работы нету...
Azamat
14
hi im a cs student. i need some advice from people who have enough experience in Embedded Software. I need to know whether this profession is suitable for me. I have watched s...
Sahand 🏔️
8
А кто-нибудь запихивал сборку перловых модулей/образов с perl приложениями в окружения без интернета (в специализированном CI/CD)? У меня сейчас есть ряд cpanfile, которые н...
Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
14
Кстати а покупал кто-нибудь ЭЦП для подписи кода? А то у меня на некоторых компах и ОС иногда SmartScreen винды программу за вирус принимал. Если купить такую ЭЦП и подписыват...
Дмитрий Завгородний
15
Карта сайта