2016-10-31 12 views
0

私は非常に基本的で単純な検索プログラミングを作成しました。これは、フェッチされた行に入力されたユーザー名の姓と名を表示します。成功しましたが、入力されたユーザー名がデータベース内のユーザー名の正確な文字と長さと一致する場合のみです。私はコードが完成していなくてもそれを読むようにしたい。たとえば、データベースのユーザー名が「baymax16」で、入力されたユーザー名が「max16」の場合、一部の文字が一致するためtrueを返すようにします。 preg_match()を使用しましたが、エラーがあります。 preg_match()を使用する必要がありますか?はいの場合は、どのように正しく使用する必要がありますか?いいえ、私は何を使うべきですか?そこphp検索が不完全な入力を受け入れる

<?php 
$db = new PDO('mysql:host=127.0.0.1;dbname=sample;charset=utf8', 'root', ''); 

if(isset($_POST['search'])) { 
    $search = $_POST['search']; 

    $query = $db->prepare("SELECT * FROM search WHERE username=:username"); 
    $query->execute(['username' => $search]); 

    $row = $query->fetch(PDO::FETCH_OBJ); 

    if(count($row)) { 
     if(preg_match($search, $row)) { 
      echo $row->firstname . ' ' . $row->lastname; 
     } 
    } 
} 

答えて

3

あなたのクエリ: SELECT * FROM search WHERE username=:usernameが与えられた文字列IFFデータを抽出するために、データベースを言っているが、データベースに存在する文字列と同じです。

質問にLIKE演算子を使用しないのはなぜですか?

SELECT * FROM search WHERE username LIKE CONCAT('%', :username,'%');

+0

ありがとう、仲間 – JTrixx16

関連する問題