我有一个包含以下内容的数据库:
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/