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 ответов

82 просмотра

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 и прочего

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта