2011-07-17 11 views
0

会社名がName Nameのテーブルがあり、検索文字列に基づいてデータを返すMySQLクエリを実行する検索ボックスがあります。方法:検索ボックスの文字列と適切なケーステーブルデータを一致させる

Company 
---------- 
Name Name 
Name Name 

などなどなど、そして私のクエリは次のようになります:

のは、私のテーブルのデータは次のようになりましょう

$sql = "SELECT * 
      FROM scoreboard 
     WHERE codcliente = '".$q."' 
      OR nombre LIKE '%".$q."%'"; 

私がしようとする今、すべてが正常に動作します: nam,Nam,Name,Name N,NAM,NAMEおよびNAME N。私の質問はなぜそれが動作しません:nameまたはname n?明らかに、テーブルデータの大文字と小文字が混在する場合がありますが、もしそうなら、namはなぜ機能しますか?

はここSHOW CREATE TABLE scoreboard結果です:あなたは場合によって妨害されることはありませんので

CREATE TABLE `scoreboard` (
    `id` int(11) NOT NULL DEFAULT '0', 
    `codcliente` text, 
    `nombre` text, 
    `ejecutivo` text, 
    `banca_as400` text, 
    `banca_real` text, 
    `ingresos` varchar(20) DEFAULT NULL, 
    `ciiu` text, 
    `division` text, 
    `actividad` text, 
    `riesgo_industria` text, 
    `riesgo_cliente` text, 
    `fecha` date DEFAULT NULL, 
    `analista` text, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 
+0

'scoreboard'テーブルの 'CREATE TABLE'文を追加するように更新してください。照合を確認したい、特に... –

+0

create table code @omgを含むように更新されました。 – rdrgrtz

+0

@rdrgrtz :)実際に彼はMySQLで 'SHOW CREATE TABLE scoreboard'を実行し、ここに出力を追加するようにお願いしました。 – Karolis

答えて

1

は大文字でそれらすべてを比較し、ケースの問題を避けるために。

$sql = "SELECT * 
      FROM scoreboard 
     WHERE upper(codcliente) = '".strtoupper($q)."' 
      OR upper(nombre) LIKE '%".strtoupper($q)."%'"; 

でも、信頼できると思われます。

+0

ユーザーが小文字を入力するとどうなりますか?影響を受けません? (私はちょっと試してみるつもりだ)。 @caffein – rdrgrtz

+0

aboceコードは、永遠のユーザー入力とデータベース情報を大文字に変換します。これはWHERE/OR句でのみ実行されるため、入力と表示には影響しません。 –

+0

ありがとう@カフェイン!私はそれを少し修正しました: '$ sql =" SELECT * FROM scoreboard WHERE codcliente = '"$ q" "OR OR(nombre)LIKE'%" strtolower($ q)。 "% '"; ' 'codcliente'は数値なので大文字と小文字は必要ありません。小文字で作業するのが好きです:) – rdrgrtz

関連する問題