以下を含むデータベースがあります。
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");
?>