php - 尝试在 PHP 中进行复杂的搜索

标签 php mysql

场景

我目前有一个数据库连接到我从本地主机运行的 PHP 页面,其中一个 PHP 页面是一个商店,它的项目是从数据库中填充的。

我允许用户搜索特定的项目,例如:

“列出商店中低于 $5.00 的每件商品”

我已经做到了。我目前有 四个 简单搜索来搜索商店中的商品,这些搜索按:“类别”、“名称”、“可用性”和“价格”

因此,如果用户输入了“礼物”类别,那么所有“礼物”都应该显示出来,这已经有效了。


虽然这些单一条件搜索给出了结果?我希望用户能够同时从所有四个三个两个 条件选项中进行选择 em> 时间。

我构建 PHP 的尝试看起来有点像这样,但这行不通。

    <?php 
    //check to make sure the form has been submitted and retrieve the contents of 
    //both things and make variables.
    if(isset($_POST['search'])){
    $get_price=$_POST['price'];
    $get_function=$_POST['Operation'];
    $get_name=$_POST['UserEnteredText'];

$get_Availability=$_POST['AvailabilityOperation'];
$get_Category=$_POST['CategoryOperation'];
//create the query to extract the data from the table and store
//the SQL query in a variable called $query
/*$query="SELECT * FROM friends WHERE name = '$get_name'";*/

if ($get_function == 'Higher')
{
$queryPrice="SELECT * FROM product WHERE price < $get_price";
}
else
{
$queryPrice="SELECT * FROM product WHERE price > $get_price";
}

if ($get_name = $get_name)
{
$queryName="SELECT * FROM `product` WHERE `Product Name` like '%$get_name%'";
}
else
{
//doesn't work  
}

if ($get_Availability == 'Now')
{
$queryAvailability="SELECT * FROM product WHERE availability LIKE '%Now%'";
}
elseif ($get_Availability == 'Out Of Stock')
{
$queryAvailability="SELECT * FROM product WHERE availability LIKE '%Out%'";
}
else
{
$queryAvailability="SELECT * FROM product WHERE availability";
}

if ($get_Category == 'Garden')
{
$query="SELECT * FROM product WHERE category LIKE '%Garden%'";
}
elseif ($get_Category == 'Gift')
{
$query="SELECT * FROM product WHERE category LIKE '%Gift%'";
}
elseif ($get_Category == 'Test')
{
$query="SELECT * FROM product WHERE category LIKE '%Test%'";
}

//the result set of the mysql_query function is then stored in
//an array called $result
$result=mysqli_query($connection, $queryPrice, $queryName, $queryAvailability, $get_Category);
//create while loop and loop through result set, reading each one 
//and displaying it through the use of an echo command

while ($row = mysqli_fetch_array($result)) {

    $itemname=$row['Product Name'];
    $itemPrice=$row['Price'];
     $itemavailability=$row['Availability'];
?>
    <div class="item">
        <h3><?php echo $itemname. " " ?></h3>
        <a href="<?php echo $row["Product Image Path"] ?>" data-lightbox="Perfecto">
            <img src="<?php echo $row["Product Image Path"] ?>" width="70" height="70" alt="Sculpture1"> </a>
        <br />
        Price: £<?php echo $itemPrice. " " ?>
        <form action="" method="post">
            <input type="submit" value="Buy" />
        </form>
    </div>


<?php
}

}
?>

问题

想知道是否有任何有经验的 PHP 程序员可以帮助我理解如何构建一个算法来接受所有这些值并产生与我的个人搜索相同的结果。

如果您想知道我是如何得出这个结论的,我尝试将所有其他四个搜索(都有效)组合成一个更复杂的搜索。

非常感谢,谢谢。

最佳答案

您的 SQL 查询中的条件需要是 AND一起形成具有多个条件的单个查询。

一般来说,如果你想要所有的对象都匹配

SELECT fruits FROM market WHERE color='green'

SELECT fruits FROM market WHERE price<5 ,

解决办法是

SELECT fruits FROM market WHERE color='green' AND price<5 .

关于php - 尝试在 PHP 中进行复杂的搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26590990/

相关文章:

php - 如何在 MacOS High Sierra 上为 php@7.1 安装 memcached 模块?

php - 在 PHP 中显示 12 个月的数据

mysql - 将 SQL LIKE 运算符与 UPPER() 语法结合使用

PHPStorm 自动完成不适用于 Laravel 5

php - Laravel 索引策略

php - 合并多个 CSS 文件

php - 如果我无法访问它,我该如何配置 php.ini

python - SQLAlchemy 多个 AND 表达式在同一条目上创建多个选择

mysql - 通过phpMyAdmin为mysql添加一个函数

php - 从 MySQL "most clicked items in the past 6 hours"中检索?