2016-04-15 258 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,因此您沒有使用正確的語法。

見本手冊:http://dev.mysql.com/doc/refman/5.7/en/string-comparison-functions.html

你的代碼看起來應該是這樣的:

$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>"; 
} 

檢查過您的控制檯和錯誤,你會看到的是怎麼回事與否。

的JS控制檯會拋出你:

SyntaxError: missing : after property id

如果仍然不爲你工作,那麼你很可能有錯誤,在數據庫中的某個地方。

諮詢:

0

你似乎TYO使用$用戶名兩次 -

首先對數據庫的訪問

$username = "root"; 

,然後引用數據庫結果

$stmt->bind_result($username); 

這似乎引起衝突因爲$ username =「root」 - 嘗試將名稱更改爲不同的變量,看看是否有所作爲;例如:

$stmt->bind_result($user_name); 

也還沒有宣佈$ SearchResult所要推動元素融入前一個數組,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

你還缺少一個 「:」 在阿賈克斯查詢 - 應該是:

data: {partialSearch:partialSearch},