0

以下を含むデータベースがあります。

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

1 に答える 1

2

うめき声:

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

コードでインデックスを使用できないことに注意してください。

于 2012-09-11T01:59:29.273 に答える