Member 14315682 Ответов: 2

Как я могу получить динамические ссылки для извлечения данных из SQL server?


Hello!

I am not getting any errors but when I run my code it doesn't pull anything from the server. It is just blank. I feel like there must be something really obvious I'm missing. 


Что я уже пробовал:

<?php
if(isset($_GET['id'])) {
	require_once  'login1.php';

	$id = null; 
	
	$conn = new mysqli($hn, $un, $pw, $db); 
	if($conn->connect_error) die($conn->connect_error); 
	$ID = mysqli_real_escape_string($conn, $_GET['id']);
	
	$sql = "SELECT * FROM freshwater WHERE id='$id' ";
	$result = mysqli_query($conn, $sql) or die("Bad Query: $sql");
	$row = mysqli_fetch_array($result);
	
}
	else {
		header('Location: freshwaterlist.php');
	}
?>
<html>
<head>
<title>Fish R Us - Saltwater Fish</title>
</head>
<body>
<div class="toptext"><center>
<img src="banner.png" height="300"></img></center>
</div>
<center>
<h2><?php echo $row["name"] ?></h2>

<img src="<?php echo $row["picture"] ?>"></img>
<table>
  <tr>
    <th>Name</th>
    <th>Type</th>
    <th>Quantity</th>
	<th>Price</th>
  </tr>
  <tr>
    <td><?php echo $row["name"] ?></td>
    <td><?php echo $row["type"] ?></td>
    <td><?php echo $row["qty"] ?></td>
	<td><?php echo $row["price"] ?></td>
  </tr>
</table><br>
<table class="fish-text">
<th><?php echo $row["description"] ?></th>
</center></table><br>
<button padding: 10px 24px;><a href="products.php">Return to Products List</a></button></body>
<button padding: 10px 24px;><a href="menu.php">Return to Menu</a></button>
</html>

2 Ответов

Рейтинг:
15

Bryian Tan

Я думаю, что имя переменной в PHP чувствительно к регистру, в опубликованном коде есть две переменные id с разным регистром

$id = null; 
$ID = mysqli_real_escape_string($conn, $_GET['id']);


Первый из них ($id) присваивалось нулевое значение и использовалось в запросе, что, по-моему, и должно быть $ID
$sql = "SELECT * FROM freshwater WHERE id='$id' ";


И код может быть уязвим для SQL-инъекций и XSS-атак.
PHP В в mysqli подготовленные операторы-учебник, чтобы предотвратить SQL-инъекции[^]

Пример атак SQL-инъекций и межсайтовых сценариев (XSS) :
SQL-инъекции и межсайтовые Скрипты[^]


Рейтинг:
0

Patrice T

Цитата:
Я не получаю никаких ошибок, но когда я запускаю свой код, он ничего не вытягивает с сервера.

Совет: используйте отладчик, чтобы точно видеть, что делает ваш код.
$sql = "SELECT * FROM freshwater WHERE id='$id' ";

Не обязательно решение вашего вопроса, но у вас есть еще одна проблема.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? - Обмен Стеками Информационной Безопасности[^]