У меня есть таблица с столбцами
GroupID | GroupName | GroupDesc | Overs | ----------------------------------------- 1 | Test Group|Description| Yes |
У меня есть страница под названием list.php, и в настоящее время она создает URL для каждой строки в БД в таблице групп (см. Выше).
Код не самый красивый, но я думаю, что он работает, это код
list.php
<?php $result = mysql_query("SELECT * FROM groups"); while($row = mysql_fetch_array($result)) { echo "<div class=\"divider\">"; echo "<a href=\"group.php?id="; echo $row['GroupID']; echo "\">"; echo $row['GroupName']; echo "</a>"; echo "<br><br>"; echo $row['GroupDesc']; echo "<br>"; echo "Over 18's: "; echo $row['AgeRes']; echo "</div>"; } ?>
Затем создается URL-адрес, такой как http://domainname.com/group/group.php?id=1
Вот где мои вопросы: как я могу выбрать соответствующую строку из БД выше, используя раздел ID в URL?
Мой второй вопрос заключается в том, как бы мы прекратили это инъекцию SQL?
Я как бы новичок во всем этом, поэтому мне бы хотелось ответить на этот и любые хорошие источники чтения, чтобы я мог развивать свои навыки дальше.
благодаря
Чтобы ответить на первый вопрос, вам нужно использовать предложение where в вашем запросе. Я не уверен, правильно ли используется имя столбца, но я уверен, что вы поняли эту идею. Существуют бесплатные загружаемые интерактивные интерактивные учебники SQL, которые вы можете использовать, чтобы получить представление о том, как выполнять кодовые запросы.
Чтобы ответить на ваш второй вопрос, вы можете использовать mysql_real_escape_string()
для mysql_real_escape_string()
передаваемой переменной. Лучше всего изменить способ подключения к базе данных. PDO и mysqli делают гораздо лучшую работу по подключению к базе данных. Вы должны посмотреть на их изучение – особенно если вы только начинаете.
<?php $id=mysql_real_escape_string($_GET['id']); $result = mysql_query("SELECT * FROM groups where id=".$id.";"); // Am not 100% sure if that is the right column name to use for your database. while($row = mysql_fetch_array($result)) { echo "<div class=\"divider\">"; echo "<a href=\"group.php?id="; echo $row['GroupID']; echo "\">"; echo $row['GroupName']; echo "</a>"; echo "<br><br>"; echo $row['GroupDesc']; echo "<br>"; echo "Over 18's: "; echo $row['AgeRes']; echo "</div>"; } ?>
Q1: вам нужно получить переменную запроса и включить в свой SQL-запрос:
$result = mysql_query("SELECT * FROM groups WHERE id = '" . $_GET['id'] . "'");
Q2: сначала вы должны избежать значения, прежде чем включать в свой запрос:
$id = (int)mysql_real_escape_string($_GET['id']);
Затем измените свой запрос на следующее:
$result = mysql_query("SELECT * FROM groups WHERE id = '" . $id . "'");