[ad_1]
PHP と MYSQL を使用して検索フィールドを作成していますが、正常に動作しています。 しかし、スペースまたは % を押して検索をクリックすると、データベースから列の説明のすべての行が取得されます。 コードは次のとおりです。
<!-- Main Content --> <form action="test.php" method="GET"> <div class="container mb-5"> <div class="row"> <div class="col-lg-6"> <label for="search" class="mb-2 mt-4 fw-bold d-flex justify-content-center" style="font-size: 20px; color: #6f42c1;">Search</label> <div class="input-group mb-4"> <input type="search" class="form-control" name="search" value="<?=(isset($_GET['search'])?$_GET['search']:'');?>"> <button type="submit" class="btn btn-outline-secondary"></button> </div> <div class="d-flex justify-content-center mb-4"> <canvas class="bg-light" id="myCanvas" style="border:1px solid #dee2e6;"></canvas> </div> <?php if(isset($_GET['search']) && !empty($_GET['search'])){ $condition = ''; $param = explode(" ", sanitize($_GET['search'])); foreach($param as $text){ $condition .= "description LIKE '%" . mysqli_real_escape_string($db, $text) . "%' AND "; } $condition = substr($condition, 0, -4); $sql = "SELECT * FROM customers WHERE " . $condition; $result = $db->query($sql); if(mysqli_num_rows($result) > 0){ while($row = mysqli_fetch_assoc($result)){ ?> <div> Description: <?=html_entity_decode(str_replace("p", "span", $row['hadeeth']));?> <hr> </div> <?php } }else{ echo 'No results'; } } ?> </div> </div>
私が試したこと:
通常どおり検索すると、正しい結果が得られます。 また、検索フィールドが空で検索をクリックすると、結果が得られませんが、これも正しいです。 しかし、スペースを 1 回以上押してから検索ボタンをクリックすると、列の説明からすべての行が取得されますが、これは必要なものではありません。 % と入力しても同じことが起こります。 なぜそれが起こっているのか、そして解決策は何ですか?
[ad_2]
コメント