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

Я начал программировать на php, и у меня возникли небольшие сомнения.

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

Проблема в том, что в запросе всегда используется последнее значение раскрывающегося списка.

Кто-нибудь может помочь мне найти ошибку?

Почему исследование, где предложение всегда является последним значением раскрывающегося списка?


Код

<tr><td>Technical:</td><td>

 <select>
    <?php
    $query = "SELECT idTechnical, name FROM technicals";
$result2 = mysql_query($query);
$options=""; 
while($row=mysql_fetch_array($result2)){   
    $id=$row["idTechnical"];   
    $thing=$row["name"]; 
     echo "<OPTION VALUE=$id>$thing</option>";
}
    ?>         
</select>  

<?php
 if (isset($_POST['Next'])) { 


if($_REQUEST['Next']=='Search') {
    {
        $sql="select idTask, descTask, deadline, idTechnical from tasks where idTechnical  = '$id' order by deadline desc";
    $result=mysql_query($sql);
    $count=mysql_num_rows($result);
    } 
}
 }
?>

Я выбираю любое значение из выпадающего списка, но использует только последнее значение в предложении, где:S

введите описание изображения здесь

1 ответ

Вот что я бы сделал для формы (при условии, что у вас есть правильный тег формы с атрибутом действия, указывающим на правильный скрипт PHP):

<tr>
<td>Technical:</td>
<td>
    <select name="technical">
        <?php
            $query = "SELECT idTechnical, name FROM technicals";
            $result2 = mysql_query($query);
            $options="";
            while($row=mysql_fetch_array($result2)){
                echo '<option value='.$row["idTechnical"].'>
                    '.$row["name"].'
                    </option>';
            }
        ?>
    </select>
</td>

Затем в сценарии PHP:

$sql='SELECT
    idTask,
    descTask,
    deadline,
    idTechnical
    FROM tasks
    WHERE idTechnical  = '.$_REQUEST['technical'].'
    ORDER BY deadline DESC';
$result=mysql_query($sql);
$count=mysql_num_rows($result);

Это должно сделать это для вас.

Но, пожалуйста, обратите внимание: приведенный выше сценарий представляет собой угрозу безопасности, поскольку оставляет дверь открытой для внедрения SQL-кода.

Лучший способ сделать это - использовать оператор PDO Prepared, например:

$db = new PDO('mysql:host=CHANGE_THIS_TO_YOUR_HOST_NAME;
    dbname=CHANGE_THIS_TO_YOUR_DATABASE',
    'CHANGE_THIS_TO_YOUR_USERNAME',
    'CHANGE_THIS_TO_YOUR_PASSWORD');

$sql='SELECT
    idTask,
    descTask,
    deadline,
    idTechnical
    FROM tasks
    WHERE idTechnical  = :id
    ORDER BY deadline DESC';
$query = $db->prepare($sql);
$query->bindValue(':id', $_REQUEST['technical']);
$query->execute();
$count = $query->rowCount();

Если вы только начинаете работать с PHP, я настоятельно рекомендую вам потратить некоторое время на ознакомление с запросами к базе данных PDO. Удачи и счастливого кодирования!

Другие вопросы по тегам