2016-04-15 16 views
1

ここで何がうまくいかないのか理解してください。エラーは表示されませんが、何も返されません。検索バーは、私のデータベースから他のユーザーの名前を返す必要があります。ここで検索バーは結果を返すことはありません

はtest.phpを次のとおりです。ここで

<?php 
    session_start(); 
?> 

<!DOCTYPE html> 
<head> 
    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
    <script type="text/javascript"> 
     function search(partialSearch){ 
      $.ajax({ 
       url:"PHP.php", 
       type:"POST", 
       data {partialSearch:partialSearch}, 
       success:function(result){ 
        $("#results").html(result); 
       } 
      }); 
     }; 
    </script> 
</head> 

<body> 

    <div class="container"> 

     <h3>Find Other users</h3> 

     <input type="text" name="partialSearch"onkeyup="search(this.value)"/> 
     <div id="results"></div> 
    </div> 

</body> 
</html> 

PHP.php

<?php 

    $servername = "localhost"; 
    $username = "root"; 
    $password = "root"; 
    $dbname = "coursework_db"; 

    // Create connection 
    $conn = new mysqli($servername, $username, $password, $dbname); 
    // Check connection 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 

    $partialSearch = $_POST['partialSearch']; 

    $stmt = $conn->prepare("SELECT username FROM members WHERE username LIKE ? "); 
    $stmt->bind_param('s',$partialSearch); 
    $stmt->execute(); 
    $stmt->bind_result($username); 
    while ($row = $stmt->fetch()) { 
     $searchResults[] = $username; 
     echo "<div>".$searchResults."</div>"; 
    } 
?> 

は、ここでSQLのテーブルです:

CREATE TABLE members (
memberID int(5) NOT NULL AUTO_INCREMENT, 
username VARCHAR(65) NOT NULL UNIQUE, 
password VARCHAR(65) NOT NULL, 
PRIMARY KEY (memberID) 
); 

は、任意の助けを事前にありがとうございます!

+2

あなたはエラーのコンソールログをチェックしたことがありますか? –

+1

エラーをチェックしないため、「エラーは表示されません」。あなたはjsとphpの両方でエラーがあります。 JSでは、少なくとも大括弧の問題があります。 PHPであなたの結果は '

Array
Array
...' – fusion3k

+0

まあ、私はこれを働いている。あなたはこれをすべてまとめることができるはずです。 –

答えて

2

行方不明コロンのほか

として読むべき
data {partialSearch:partialSearch}, 
    ^

に:

data: {partialSearch:partialSearch}, 

PHP/MySQLの構文はオフです。

あなたは

while ($row = $stmt->fetch()) 

$rowを宣言するが、どこでもそれを使用していません。

しかし、それはあまりにも多くのコードを必要としないので、良いことには悪いことです。

また、LIKEを使用しているため、正しい構文を使用していません。

$partialSearch = "%". $_POST['partialSearch'] ."%"; 
$stmt = $conn->prepare("SELECT username FROM members WHERE username LIKE ? "); 

$stmt->bind_param('s',$partialSearch); 
$stmt->execute(); 
$stmt->bind_result($username); 

while ($stmt->fetch()) { 

    echo $username; 

    echo "<div>".$searchResults."</div>"; 
} 

があなたのコンソールを確認したとのエラーのために、あなたが上か何が起こっていたか見たのだろう:http://dev.mysql.com/doc/refman/5.7/en/string-comparison-functions.html

何あなたのコードは次のようになりますが、このです:

この上のマニュアルを参照してください。 。

JSコンソールはあなたを投げているだろう:

SyntaxError: missing : after property id

それはまだあなたのために動作しない場合は、あなたが最も可能性が高いどこかのデータベースのエラーを持っています。

はご相談ください:

0

あなたはTYO

データベースが競合を起こすように思われる

$stmt->bind_result($username); 

を結果参照するデータベース・アクセス

$username = "root"; 

するための第1及びtwice- $のユーザー名を使用しているようです$ username = "root"から - 名前を別の変数に変更して、それが違いを生むかどうか確認してください。例えば:

$stmt->bind_result($user_name); 

また、あなたが宣言されていない$にsearchResultsはそれに要素をプッシュする前に配列すること、whileループの前に次の行を追加します。

$searchResults = array(); 
+0

ありがとう、それを拾いませんでした。これらの変更を行ったが、まだ結果を提供していないか? – imconnor

0

を連結$partialSearch%とワイルドカードを。

$stmt = $conn->prepare("SELECT username FROM members WHERE username LIKE ? "); 
$partialSearch = "%". $_POST['partialSearch'] ."%"; 
$stmt->bind_param('s',$partialSearch); 
... 
0

あなたも不足している ":" Ajaxのクエリで - 次のようになります。

data: {partialSearch:partialSearch}, 
関連する問題