Когда переменная $ selectedname заменяется на "test", запрос выводит правильные данные. Когда используется переменная $ selectedname , переменная var_dump показывает
Выход Var_dump ![enter image description here](https://i.stack.imgur.com/CrjPr.png)
База данных Таблица
![enter image description here](https://i.stack.imgur.com/QrWTG.png)
Код
<?php
echo "Selected Location";
?>
<br>
<?php
$selectedname = $_POST['LocationName'];
echo $selectedname;
?>
<br>
<?php
require_once 'config.php';
$sql = "SELECT Locationid, LocationName, Description FROM Location Where LocationName= '".$selectedname."' ";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of row
while($row = $result->fetch_assoc()) {
echo " id: " . $row["Locationid"]. " Name : " . $row["LocationName"]. " Description :" . $row["Description"]. "<br>";
}
} else {
echo "0 results";
?> <br> <?php
var_dump($sql);
}
?>
Примечание
- Я безуспешно пытался заключить переменную $ selectedname различными способами.
- Я знаю, что в настоящее время она уязвима для SQL инъекций.
- $ selectedname = $ post _ ['locationName'] извлекается из базы данных на предыдущей странице. Так что должно соответствовать идеально.
Вопрос
- Почему не работает запрос, когда жесткий код заменяется переменной, и как я могу это исправить?
Обновление !!!
Я удалил пробелы из переменной, используя $ selectedname = preg_replace ('/ \ s + /', '', $ _POST [' LocationName ']);
, который решил проблему!