2017-01-26 17 views
-1

私のデータベースのデータには名前のリストがあり、各名前にはIDがあります。名前が検索された名前と一致すると、その人物IDを取得する簡単な検索を試みています。MYSQLのSELECTクエリが正常に動作しない

if(isset($_POST['submit'])&& empty($_POST['personName'])==FALSE){ 
    $name=$_POST['personName']; 

    if (!preg_match("/^[a-zA-Z ]*$/",$name)) { 
     echo "No numeric characters allowed"; 
    }else{ 
     include('connect.php'); 
     if($con==false){ 
     }else if ($con==true){ 
      $cleanName=mysqli_real_escape_string($con,$name); 
      $getPersonID="SELECT person_ID FROM person WHERE Name='$cleanName'"; 
      $resultGetPersonID=mysqli_query($con,$getPersonID)or die(mysqli_error($con)); 
      if(mysqli_num_rows($resultGetPersonID)>0){ 
       echo "query sucessrful"; 
      }else{ 
       echo "query failed"; 
      } 

     } 
    } 

}else{ 
    echo "Data entered wrong"; 
} 

HTML

 <div class="searchBox"> 
    <form action="getPerson.php" method="POST"> 
     Name: <input id='personName' type="text" name="personName" >&nbsp;<input type="submit" value="Search" id="search" name="submit"> 

    </form> 
    </div> 

Person Table

Structure

+0

我々は助けるためにテーブル構造を必要とします。また、$ clearNameはどこで初期化されていますか? –

+1

'$ x == false'のようなものを習得してください。ほとんどのメソッドは真実な値を返すように設計されているので、あなたは 'if($ con)'をやっつけることができます。 – tadman

+2

**警告**:mysqliを使用する場合は、[パラメータ化されたクエリ](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)と['bind_param']( http://php.net/manual/en/mysqli-stmt.bind-param.php)を使用してクエリにユーザーデータを追加します。 **正しくエスケープするのを忘れた場合、重大な[SQLインジェクションのバグ](http://bobby-tables.com/)を作成するため、手動エスケープと文字列補間または連結を使用しないでください。 – tadman

答えて

0

あなたが入力をmatch名のIDを取得したいなら、あなたはlikeオペレータ、例えばとのことをしようとする場合があります:

大文字小文字を区別しないマッチングのため

lower機能を使用してみてくださいと小文字で名前を渡し、g.g:

SELECT person_ID FROM person WHERE lower(Name) like %<input>% 
+0

何を入れ​​る必要がありますか? %%ですか? –

+0

+0

の代わりに '$ cleanName'を入れる必要があるのですか?または、単純な入力が機能しないのはなぜですか? –

関連する問題