Фильтрация PHP-запроса в Dreamweaver

Я должен отфильтровать критерии поиска, которые позволяют клиентам фильтровать по доступной цене и категории. Когда я пытаюсь отфильтровать по цене, отображается только число, а не продукты, которые являются этой ценой. Мне было интересно, если кто-нибудь может помочь мне, что я сделал не так.

это моя форма

<form action="results2.php" method="post">
Name  <input type="text" name="price" >
<input type="submit" name="search" value="Find Me">
</form>

и это мой results2.php

<?php
if (isset($_POST['search'])) {
$get_name = $_POST['price'];
echo $get_name;
$query = "SELECT * FROM product WHERE price LIKE '%$get_name%'";
$result = mysqli_query($connection, $query);
while ($row = mysqli_fetch_array($result)) {
$productName = $row['productName'];
$description = $row['description'];
$category = $row['category'];
$availibilty = $row['availibilty'];
$price = $row['price'];
$height = $row['height'];
echo $productName . " " . $description . "  " . $category . " " . $availibilty . " " . $price . " " . $height . "<br />";
}
}
?>

Я пытаюсь отфильтровать по цене, когда он показывает цену, а не все мои продукты.

0

Решение

То, как вы должны делать это, использует PDO.

$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';

$dbh = new PDO($dsn, $user, $password);

$stmt = $dbh->prepare('
SELECT
*
FROM product
WHERE
price >= :low
');

$stmt->bindParam(':low', $_POST['price']);

$stmt->execute();
// you can test the return value

while(($result = $stmt->fetch(PDO::FETCH_OBJ) !== false)
{
// output the records
}

Я написал это встроенным образом, так что, скорее всего, он не будет работать из коробки, но он познакомит вас с PDO, подготовленными утверждениями и с тем, как решить проблему SQL INJECTION.

Вам также рекомендуется фильтровать и дезинфицировать $_POST, Посмотрите на PHP filter_var функции

0

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

Других решений пока нет …

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