如何在序列号中搜索模式?

时间:2012-09-11 01:53:19

标签: php mysql function pdo preg-match

我有一个包含以下内容的数据库:

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");
?>

1 个答案:

答案 0 :(得分:2)

呻吟:

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

请注意,它无法在代码上使用索引。