データベースにログインが存在するかどうかを確認する方法を知りたいです。現時点では を使用していますmysql_num_rows()
が、2 時間前に、これは私の Web サイトにとって安全ではないことに気付きました。単語が同じ単語と等しいかどうかを確認する方法がわかりません。文字が異なるだけです...
5 に答える
大文字と小文字の混合を意味すると仮定します。たとえば、paul,Paul,PAUL,pAUL は、データベース内で単一の名前として扱う必要があります。
次に、この sql クエリを使用して、名前が既に存在するかどうかを確認する必要があります。
SELECT * FROM table1 WHERE LOWER(table1.nickname) = LOWER('PaUl')
これにより、等価チェックを実行する前に、列「ニックネーム」のデータが小文字に変換され、「PaUl」が小文字に変換されます。
SELECT
クエリでそれを定義できます
SELECT * FROM `table` WHERE LOWER(`Nickname`) = LOWER($nickname)
*_ci
ただし、大文字と小文字を区別しないか、大文字と小文字を区別するかは、照合順序によって異なります_cs
。持っていれば*_ci
何の心配もありません。
まず第一に、ユーザー名は一意で、大文字と小文字を区別しない必要があります。ユーザー名の照合フィールドをデータベースで utf8_unicode_ci または utf8_general_ci に設定します。
次に、現在のクエリを実行します。
SELECT * FROM users WHERE username = '$_var'
SELECT whatever FROM users WHERE UCASE(username) = 'USERNAMEINUPPERCASE';
基本的に、UCASE()
関数を使用する場合は、(クエリの目的で) テーブル内のユーザー名を大文字に変換してから、必要なものの大文字バージョンと比較して、クエリの大文字と小文字を区別しません。
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html
比較を行う前に、strtolower()
両方の変数で関数を使用します