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

时间:2018-09-11 07:23:08

标签: php mysql sql

我做了一个简单的PHP搜索功能,它可以搜索product_name,但是我想添加另一个功能,以便它可以从product_name进行搜索 OR product_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'];
}

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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%'

答案 2 :(得分:0)

使用WHERE条件更新您的OR子句。 将您的OR条件包装在括号中是一个不错的主意,以便以后再添加AND条件时,首先会评估OR(由于运算符的顺序)。

例如:

WHERE
(
  product.product_name LIKE :word
  OR
  product.product_type LIKE :word
)