0

私は現在このテーブルを持っています。

名前

IDと名前の2つのフィールド。データの例は1| ハリー。

今私が計画しているのは、誰かが私のフォームにヘンリーのようなものを入力すると、「H」で始まる結果をデータベースで検索し、それらが複数の結果である場合、次のような結果があるかどうかを確認することです。 「彼」でない場合は、「H」からの前の結果にフォールバックします。

私が考えることができる唯一のことはこれです、

$inputted_name = "Henry";
$query = mysql_query("SELECT `name` FROM `names`");
while($row = mysql_fetch_array($query)){
    $stored_name = $row['name'];
    if($stored_name[0] == $inputted_name[0]){
        if($stored_name[1] == $inputted_name[1]){
            $result = $stored_name;
            break;
        }   else   {
            // continue looking but then return the first result that matched one letter?
        }
    }
}

今、私はこれがそれを行うための最良の方法ではないと確信しています。クエリで可能でしょうか?私はこれに対する賢明な答えをどこで探すべきか本当によくわかりません。

4

1 に答える 1

0

mysql_query( "SELECT nameFROM names");を変更します。

to mysql_query( "SELECT nameFROM namesWHERE NAME ='"。$inputted_name。"'");

答えが複数あることを確認してください。

これは、名前がWebページなどの制御されていないソースからのものである場合、SQLインジェクションが可能になり、パラメーターが必要になるため、これを行うには不適切な方法であることに注意してください。ただし、この例では機能します。

編集:今、私はあなたの質問をもう一度読みました、はい、あなたは次のようなパラメータまたはエスケープが必要になります:

$name = mysql_real_escape_string($inputted_name);
mysql_query("SELECT `name` FROM `names` WHERE NAME='".$=name."'");

また、データベースで簡単に実行できること(文字の検索など)をコードで実行しようとしないでください。ほとんどの場合、コードは検索を実行するためにデータベースよりも悪くなります。データベースに任せてください。

于 2012-06-07T09:25:05.627 に答える