Использование формы выбора для фильтрации таблицы, запрашиваемой из MySQL с использованием PHP - PullRequest
0 голосов
/ 26 июня 2018

Я пишу некоторый 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);

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Вы должны изменить строку 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

0 голосов
/ 26 июня 2018

Вы лечите

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

как целое число, обрабатывать его как строку, сделать это:

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

Еще одно предложение - использовать LIKE

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

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

...