データベースから「GET」で送られたキーワードに適合するアイテムを

検索するシステムを作りたいと思っています。
CH model
1 MT820(半角)
1 MT820Pro(半角)
といったデータが複数あり、$key=MT8 と入れると両方ひっかかるのですが
MT82まで入れると、MT820しか検索されません。
再登録するなど試行錯誤しましたが、両方が引っかかりません。
まるで別のデータベースがを参照しているかのような動作です。
キーワードを空にすると両方引っかかります。日本語ではないのでエンコード
の問題とも思えないのですが、こういった事は起こりうるのでしょうか。
$sql = ”SELECT * FROM report
WHERE model LIKE ’%”.cnv_dispstr($key).”%’
CH =1
ORDER BY id”;
print $sql;
$res2 = mysql_query($sql, $conn) or die(”データ抽出エラー”);
$row2 = mysql_fetch_array($res2, MYSQL_ASSOC);

function cnv_sqlstr($string) {
$string = addslashes($string);
return $string;

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/02/16 21:10:27
  • 終了:--

回答(1件)

id:typista No.1

typista回答回数359ベストアンサー獲得回数72005/02/17 00:55:02

ポイント70pt

mysqlのコマンドでも、PHP実装でも問題なく取得できました。

以下の★の2箇所がミソです。

※select * なので、modelは2カラム目になります。

 【補足】tableには、idもあるようなので私の環境では、以下のtableを作成してみました。

     それと提示いただいたSQLは、CH=1の前にANDが抜けています。

mysql> desc report;

+-------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| id | int(11) | YES | | NULL | |

| CH | int(11) | YES | | NULL | |

| model | varchar(16) | YES | | NULL | |

+-------+-------------+------+-----+---------+-------+

---

$conn = mysql_connect($dbHost, $dbUser, $dbPass) or die (”MySQL接続に失敗”);

mysql_select_db($dbName) or die (”データベースに接続できません。”);

$key = ’MT82’;

$sql = ”SELECT * FROM report WHERE model LIKE ’%” . cnv_sqlstr($key) . ”%’ AND CH=1 ORDER BY id;”;

//$sql = ”SELECT * FROM ch_model WHERE model LIKE ’%” . $key . ”%’ AND CH=1 ORDER BY id;”;

print $sql;

print ”

¥n”;

$res2 = mysql_query($sql, $conn) or die(”データ抽出エラー”);

//$row2 = mysql_fetch_array($res2, MYSQL_ASSOC);

//データベースの中身を表示

★while ($row = mysql_fetch_row($res2))

{

★print ”$row[2]¥n”;

print ”

¥n”;

}

// その他の情報を表示

echo mysql_num_rows($res2) . ” 件のデータを表示しました。¥n”;

mysql_close($conn);

function cnv_sqlstr($string) {

$string = addslashes($string);

return $string;

}

---

  • id:Marimecco
    ばっちり解決しました

    ばっちり解決しました。
    まさにミソと書いて頂いたところこが、ミソでした。
    もうスッキリ!です。ありがとうございます(^^)/

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません