简单的PHP搜索从数据库返回全部[重复]

pdkcd3nj  于 2023-01-29  发布在  PHP
关注(0)|答案(3)|浏览(149)
    • 此问题在此处已有答案**:

Mysql - how to use like on multiple columns(4个答案)
十小时前关门了。
我尝试使用PHP创建一个简单的搜索过程,从本地MYSQL数据库获取数据。问题是搜索查询返回数据库集合中的所有数据,即使我使用了LIKE运算符。例如,当我搜索**"Black"时,我希望返回带有cabuid****'3'**的项(见下图),但我最终得到了所有的项目回来。
我的数据库:

我的代码如下。

    • 数据库包含. php**
<?php

$serverName = "localhost";
$dbUsername ="root";
$dbPassword ="";
$dbName = "webvacser";

 $connection = mysqli_connect($serverName, $dbUsername, $dbPassword, $dbName );

if (!$connection) {
    die("Connection failed: " . mysqli_connect_error());
   
}
?>
    • 搜索. php**
<?php

include_once 'header.php';

?>



<div class="about-section">
  <h1>Search</h1>
</div>

<form  style="border:1px solid #ccc" method="post">


  <div class="container">


    
    <p>Type something to search.</p>
    <hr>

    <label for="search"><b></b></label>
    <input type="text" placeholder="Enter Search" name="search" >

    <div class="clearfix">
    <button type="submit" name="search">Search</button>
  </div>
<style>  
    {background: #f1f1f1;}
</style>

<?php

include __DIR__.'../includes/dbh.includes.php';

if (isset($_POST["search"])) {
$query = $_POST["search"];

$sql = "SELECT * FROM boots WHERE concat (cabname,cabdescription) LIKE '%".$query."%'";

     $gotResults = mysqli_query($connection,$sql);

     if($gotResults) {
        if(mysqli_num_rows($gotResults)>0)
        {
            while($row = mysqli_fetch_array($gotResults)){
            $cabname=$row['cabname'];
            $cabdescription=$row['cabdescription'];
            
?>



<div class="row">
  <div class="column">
    <div class="card">
      <img src="images/<?php echo $row['image']?>"  style="width:100%">
      <div class="container">
        <h2> 
          <?php echo $row['cabname']; ?> </h2>
        <p><?php echo $row['cabdescription']; ?></p>
        <p><?php echo $row['cabprice']; ?> € </p>        
        <form  style="border:1px solid #ccc" method="POST"  enctype="multipart/form-data">
        <p><button type="submit" class="button" name="add">Add to cart</button></p>
        <input type='hidden' name='product_id' value="<?php echo $row['cabuid']; ?>">
            </form>
      </div>
    </div>
  </div> 
  <?php 
            }
          }
        }
      }
  ?>
    • 编辑:我已更改代码并使用搜索查询

"SELECT * FROM启动WHERE concat(cabname,cabdescription)类似于' %". $query."%'";
并尝试运行查询
$sql ="SELECT * FROM启动WHERE cabname类似于' %". $query." %'或cabdescription类似于' %". $query."%'";
然而问题仍然存在。我还注意到无论我搜索什么(即使我搜索'0000')我仍然会得到我的表的所有内容,这意味着搜索查询根本没有执行。也许我的数据库有问题?

wooyq4lh

wooyq4lh1#

你设置cabname的方式被转换成了一个bool,因为它们都是非空字符串,所以都被转换成了true,然后你就有了一个or条件,这个条件可能在这一点上还没有执行。

afdcj2ne

afdcj2ne2#

将查询从$sql = "SELECT * FROM boots WHERE cabname OR cabdescription LIKE '%".$query."%'";修改为$sql = "SELECT * FROM boots WHERE cabname LIKE '%".$query."%' OR cabdescription LIKE '%".$query."%'";
因为当前查询等于SELECT (...) WHERE cabname NOT NULL OR cabdescription LIKE (...)

ryoqjall

ryoqjall3#

请尝试以下操作:SELECT * FROM启动WHERE cabname LIKE '%".$query."%'或cabdescription LIKE '%".$query."%'

相关问题