如何在序列号中搜索模式


How do I search for a pattern in a serial number?

我有一个数据库,其中包含以下内容:

pnid     partnumber       desc       code
====     ==========       ====       ====
1        123-12345        hdd        CMYK

因此,code字段包含我要查找的序列号的模式。我想做的是,我想从数据库中获取所有代码,然后检查用户输入是否与代码匹配,并显示匹配代码的零件号。

如果说我的输入是ECMYK123456,那么函数将返回123-12345

我真的不知所措。我所拥有的只是我的基本PDO连接。

<?php
function checkPattern($inputString) {
    $dbuser = "root";
    $dbpass = "123456";
    $dbconn = new PDO('mysql:host=localhost;dbname=3parsfdb',$dbuser,$dbpass);  
    $dbconn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $dbconn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    $query = $dbconn->query("SELECT * FROM `partnumber` WHERE '%$inputString%' LIKE `ctcode`  LIMIT 1");
    foreach ($query as $row) {
        return $row['partnumber'];
    }
}
echo checkPattern("ECMYK12345");
?>

当我尝试该函数时,它不会返回任何结果。代码出了什么问题?

最终代码:

<?php
function checkPattern($inputString) {
    $dbuser = "root";
    $dbpass = "123456";
    $dbconn = new PDO('mysql:host=localhost;dbname=3parsfdb',$dbuser,$dbpass);  
    $dbconn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $dbconn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    $query = $dbconn->query("SELECT * FROM `partnumber` WHERE '$inputString' like concat('%', ctcode, '%') LIMIT 1");
    foreach ($query as $row) {
        return $row['partnumber'];
    }
}
echo checkPattern("ECMYK12345");
?>

Groan:

 SELECT *
 FROM partnumber
 WHERE "ECMYK123456" like concat('%', code, '%')

请注意,它不能对代码使用索引。