2016-10-20 3 views
0

この小さなスクリプトを実行し、ユーザーが入力した文字がいくつかの名前に含まれているか確認します。 たとえば、「A」と入力すると、「A」を名前(Admin、Toma)などの一部として使用するすべてのユーザーが表示されます。 これから達成したいのは、簡単です。その文字で始まる文字のみを選択します。 だから例えば私はTOMAは、現在のクエリPHPを使用してSQLの最初の文字を検索する

query("SELECT ime FROM users WHERE ime LIKE '%".$term."%'") 

T.

で始まるので、それが唯一の管理者とNOT当麻は私が表示されますAに入力すると想像しますが、私はこれを達成するためにPHPを使用するか、直接行うことを示唆してください。これはクエリですか?

もし私に最も良い方法がわかったら、事前に感謝してください!

+1

このhttp://www.w3schools.com/sql/sql_like.aspを確認してください。それは先行するワイルドカードです。パラメータ化されたクエリも使用する必要があります。 – chris85

答えて

2

あなたのクエリは、単に初期のワイルドカードを削除する必要があります。

"SELECT ime FROM users WHERE ime LIKE '".$term."%'" 
+0

ああ、最初の文字のみを選択するのではなく、最初の%の意味は実際にはそれを制限することでしたか?また、私はちょうどあなたが私に示されたようなクエリを介して直接行うか、多分PHP上でこれを行う必要がありますか? – Tommy

+0

@ Tommy。 。 。私はドキュメントがそれをうまく説明していると思う:http://dev.mysql.com/doc/refman/5.7/en/string-comparison-functions.html。 –

0

はこれを試してみてください:

 
SELECT ime FROM users WHERE ime LIKE '".$term."%'" 
+1

このコードスニペットは問題を解決するかもしれませんが、[説明を含む](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)は本当にあなたの投稿の質を向上させるのに役立ちます。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。 – andreas

2

LIKE比較の先頭から'%'ワイルドカード文字を削除します。そのワイルドカード文字は、ゼロ、1つ以上の任意の文字と一致します。 demonstation

SELECT 'Toma' LIKE '%A%'  -- contains an 'A' 
    , 'Toma' LIKE 'A%'   -- starts with 'A' 
    , 'Toma' LIKE 'Toma'  -- matches 'Toma' 
+0

ああ、ありがとう、私はデモンストレーションが大好き!ありがとう、そのデモンストレーションは私を助けてくれました! – Tommy

1
query("SELECT ime FROM users WHERE ime LIKE '".$term."%'") 

として

ただ、最初% を削除し、先頭の `%`を脱い詳細

関連する問題