我下面有一个功能可以正常工作的函数,但是现在客户端返回并要求仅使用数字进行搜索,因为他的大多数客户端都不会键入后缀“ h”或按照我的要求输入任何后缀下面的例子:
38039或38039h
但是他还说,他只有一组以“ T”开头的产品代码,因此可以在“ T760”中键入,在这种情况下,我们需要使用前缀。
我下面的代码当前正在搜索确切的产品,有人可以帮助我处理这些示例吗?
<?php
//Find Stock Value
function checkstock($prodCode) {
$prodCode = strtoupper($prodCode);
require '../../../../config.php';
$dbh = new PDO(DB_DSN, DB_USER, DB_PASS);
$sql = "SELECT * FROM isproducts WHERE prodCode = '".
$prodCode."' AND AllowSalesOrder = '1'";
$stmt = $dbh->query($sql);
$obj = $stmt->fetch(PDO::FETCH_OBJ);
$count = $stmt->rowCount();
echo ($count == 1 ?
ROUND($obj->FreeStockQuantity, 0) : 'Invalid product code '.$prodCode.'');
}
//Call Stock Function
checkstock($_POST['productcode']);
?>
最佳答案
更改查询如下所示?
SELECT * FROM isproducts
WHERE
(
prodCode='{$prodCode}' // for product with prefix or suffix
OR prodCode LIKE '{$prodCode}%' // without suffix
OR prodCode='T{$prodCode}' // without prefix
)
AND AllowSalesOrder = ''";
单个字符通配符
OR prodCode LIKE '{$prodCode}_' // single character wild-card