我下面有一个功能可以正常工作的函数,但是现在客户端返回并要求仅使用数字进行搜索,因为他的大多数客户端都不会键入后缀“ 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

10-07 12:32