我有一个数据库,其中包含以下内容:
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, '%')
请注意,它不能对代码使用索引。