如何创建产品名称或产品设计师的PHP搜索?

问题描述 投票:1回答:3

我做了一个简单的PHP搜索功能,它可以搜索product_name,但我想添加另一个功能,以便它能够从product_nameproduct_designer搜索。

搜索功能

function search($dbh, $word){

$query = "SELECT
product.product_name,
product.product_color,
product.year_released,
product.product_price,
product.product_image,
product.product_id,
product.product_desc,
product.product_designer,
type.name as type
FROM
product
JOIN type USING(typpe_id)
WHERE
product.product_name LIKE :word";

$stmt = $dbh->prepare($query);

$stmt->bindValue(':word', '%'.$word.'%', PDO::PARAM_STR);

$stmt->execute();

// fetch one product
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}

功能调用

if(!empty($_GET['word'])) {
    $products = search($dbh, $_GET['word']);
    $title = 'Products like: ' . $_GET['word'];
}
php mysql sql
3个回答
0
投票

只需使用OR条件:

$query = "SELECT
            product.product_name,
            product.product_color,
            product.year_released,
            product.product_price,
            product.product_image,
            product.product_id,
            product.product_desc,
            product.product_designer,
            type.name as type
          FROM
            product
          JOIN type USING(typpe_id)
          WHERE
            product.product_name LIKE :word 
            OR product.product_designer LIKE :word ";

$stmt = $dbh->prepare($query);

$stmt->bindValue(':word', '%'.$word.'%', PDO::PARAM_STR);

$stmt->execute();

// fetch one product
return $stmt->fetchAll(PDO::FETCH_ASSOC);

0
投票

您查询需要更改where子句,您必须添加or并使用您想要的列名称(这里它将是product_designer

SELECT
product.product_name,
product.product_color,
product.year_released,
product.product_price,
product.product_image,
product.product_id,
product.product_desc,
product.product_designer,
type.name as type
FROM
product
JOIN type on product.typpe_id=type.typpe_id
WHERE
product.product_name LIKE '%variable%' or product_designer like '%variable%'

0
投票

WHERE条件更新你的OR子句。将OR条件包装在括号中并不是一个坏主意,这样如果您稍后添加AND条件,则首先评估OR(因为运算符的顺序)。

例如:

WHERE
(
  product.product_name LIKE :word
  OR
  product.product_type LIKE :word
)
© www.soinside.com 2019 - 2024. All rights reserved.