我有一个包含以下内容的数据库:
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");
?>
答案 0 :(得分:2)
呻吟:
SELECT *
FROM partnumber
WHERE "ECMYK123456" like concat('%', code, '%')
请注意,它无法在代码上使用索引。