我做了一个简单的PHP搜索功能,它可以搜索product_name
,但我想添加另一个功能,以便它能够从product_name
或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'];
}
只需使用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);
您查询需要更改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%'
用WHERE
条件更新你的OR
子句。将OR
条件包装在括号中并不是一个坏主意,这样如果您稍后添加AND
条件,则首先评估OR
(因为运算符的顺序)。
例如:
WHERE
(
product.product_name LIKE :word
OR
product.product_type LIKE :word
)