2017-05-28 7 views
0

でLIKEを使用して0行を返すんなぜ私は私のjsに私のクエリはPHPのPDO

の下に、このPHPの関数を呼び出す
$("#search").keyup(function(){ 
    var searchText = $('#search').val(); 
    var searchBy = $('#searchBy').val(); 
    var newObj = { action: "search", 
        searchText: searchText, 
        searchBy: searchBy 
       } 
    $.ajax({ 
     method: "POST", 
     url:"../_tasklogger/classes/tasklog-functions.php", //the page containing php script 
     dataType: 'html', 
     data: newObj, 
     success: function(response){     
      $("#taskTable").html(response); 
     }, 
     error: function (req, status, err) { 
      console.log('Something went wrong', status, err, req); 
     } 
    }); 
}); 

このAJAXからkeyup検索イベントがあります

$searchText = $_POST['searchText']; 
$searchBy = $_POST['searchBy']; 
$limit = 5; 
    $sql = "SELECT * 
      FROM tasks 
      WHERE userId = :userid and :searchby LIKE :searchtext 
      LIMIT :datalimit"; 
    $stmt = $db_con->prepare($sql); 
    $searchText = $searchText."%"; 
    $stmt->bindParam(":userid", $_SESSION['userid']); 
    $stmt->bindParam(":searchby", $searchBy); 
    $stmt->bindParam(":searchtext", $searchText, PDO::PARAM_STR); 
    $stmt->bindParam(":datalimit", $limit, PDO::PARAM_INT); 
    if($stmt->execute()){ 
     echo'<tr> 
       <th>Date</th> 
       <th>Task Name</th> 
       <th>Duration</th> 
       <th>Start Time</th> 
       <th>End Time</th> 
       <th colspan="2" style="text-align:center;">Action</th> 
      </tr>'; 
     while ($row = $stmt->fetch()){ 
      echo '<tr>'; 
      echo '<td>'.$row['taskDate'].'</td>'; 
      echo '<td>'.$row['taskName'].'</td>'; 
      echo '<td>'.$row['duration'].'</td>'; 
      echo '<td>'.$row['startTime'].'</td>'; 
      echo '<td>'.$row['endTime'].'</td>'; 
      echo '<td> 
         <button id="editbtn" value="'.$row['taskId'].'" class="btn waves-effect waves-light orange lighten-1 hoverable">Edit</button> 
        </td>'; 
      echo '<td> 
         <button id="deletebtn" value="'.$row['taskId'].'" class="btn waves-effect waves-light red lighten-1 hoverable">Delete</button> 
        </td>'; 
      echo '</tr>'; 
     } 
    } 

しかし、それはありませんが何も返さない。私はデータベース内のクエリをテストし、正常に動作します。私は問題を引き起こしている事が私の$searchText変数にあると思う。

私を助けることができる誰もありがとう!文のような

+0

'$ searchText'はどこから来たのですか?このPHPコードはループで実行されていますか?クエリを実行する直前の値は何ですか? PDOエラー[エラー処理](http://php.net/manual/en/pdo.error-handling.php)を有効にしてください。エラーが出力されているかどうかをAJAXの戻り値で確認しましたか? – Mike

+0

申し訳ありません、私は '$ searchText'が出てくるPOST値を追加しませんでした。いいえ、ループで実行されるのではなく、単純なajaxリクエスト(keyupイベント)によって呼び出されます。はい、私はPDOエラー処理を有効にしました。私は戻り値をチェックしましたが、奇妙なことに何もエラーを出力しないか、エラーを見逃しているに違いありません。 –

+0

'$ searchText'の値は何ですか? HTTPレスポンスコードとは何ですか? – Mike

答えて

0

理解PDOは:正解はこのようなプレースホルダをきれいに残すことである

"SELECT * FROM `users` WHERE `name` LIKE '%:key%'"; 

"SELECT * FROM `users` WHERE `name` LIKE :key"; 

そしてへのパーセンテージを追加

これが間違っていますキーワードを保存するphp変数

$key= "%".$key."%"; 

参考php PDOマニュアル。

お手伝いします。

+0

OPはこれを正しく実行しています。 – Mike