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

86 просмотров

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
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
Карта сайта