0

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

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

1 回答 1

2

呻吟:

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

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

于 2012-09-11T01:59:29.273 回答