php - 如何搜索序列号中的模式?

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

最佳答案

呻吟:

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

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

关于php - 如何搜索序列号中的模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12361712/

相关文章:

php - Laravel 查询 - 从相关表中获取对象及其计数

list - F#:创建一个包含所有列表头部的列表,在列表中

php - 如何告诉命名空间下的类列表

javascript - 使用 AJAX jQuery 从 PHP 脚本返回 JSON 数据

mysql - 卸载 MAMP 后如何恢复我的网站?

php - 根据选择选项(AJAX?)自动更改 PHP 变量

python - 如何将类构造函数传递给 python 函数

javascript - 基于每个节点的权重进行聚类的算法/函数?

PHP:存储文件位置...如果被覆盖怎么办?

mysql - Lumen读取某些数据库表?