jquery — Использование формы Select для фильтрации таблицы, запрашиваемой из MySQL, с использованием переполнения стека

Я пишу некоторый PHP для запроса из базы данных MySQL, которую я настроил на своем сервере WAMP. Я также изучаю PHP и HTML Javascript, так что синтаксис обоих языков все еще немного незнаком для меня.

РЕДАКТИРОВАТЬ: синтаксическая ошибка была решена, однако я теперь получаю

Неопределенный индекс: семья

ошибка при компиляции. Я запускаю два файла через мой сервер, front.php и back.php. Front содержит форму селектора, где пользователь может выбрать фильтр, который будет применен к php-запросу к MySQL. back.php получает выделение с помощью $ _REQUEST и использует его в запросе SELECT. Я разместил код, относящийся к форме селектора, в файле front.php ниже.

<form method="POST">
<select name="family" onchange="showUser (this.value)">
<option value="empty">Select a Family:</option>
<option value="capacitor">capacitor</option>
<option value="resistor">resistor</option>
<option value="ferrite bead">ferrite bead</option>
</select>
</form>

Вот вызов $ _REQUEST в back.php

$sql="SELECT * FROM testv2 WHERE family='".$_REQUEST['family']."'";
$result = mysqli_query($con,$sql);

0

Решение

Вы должны изменить строку 24 с:

$sql="SELECT * FROM testv2 WHERE family ='$_REQUEST['family']'";

Для того, чтобы:

$sql="SELECT * FROM testv2 WHERE family ='" . $_REQUEST['family'] . "'";

Поскольку это должно исправить синтаксическую ошибку, но все же использование приведенного выше кода является плохой идеей, так как код имеет уязвимость SQL-инъекции.

Я советую вам использовать подготовленное заявление PDO, если вы учитесь.
http://php.net/manual/en/pdo.prepared-statements.php

2

Другие решения

Вы лечите

$sql="SELECT * FROM testv2 WHERE family ='$_REQUEST['family']'";

как целое число, рассматривайте его как строку, сделайте это:

$sql="SELECT * FROM testv2 WHERE family ='".$_REQUEST['family']."'";

Другое предложение состоит в том, чтобы использовать как

Примечание: LIKE увеличит данные из базы данных, поэтому будьте внимательны, если у вас много данных

РЕДАКТИРОВАТЬ: Согласно ЗАПРОСУ, используйте $ _POST напрямую вместо $ _REQUEST, пожалуйста, проверьте Среди $ _REQUEST, $ _GET и $ _POST

1

По вопросам рекламы [email protected]