2013-10-30 172 views
0

背景:我試圖在搜索框中運行一些AJAX,在搜索框中去查找數據庫,然後返回結果而不刷新頁。使用PHP無法連接到我的MySQL數據庫mysqli_connect()

問題:我不確定它是否真的連接到我的數據庫。我已經使用THIS METHOD測試了連接,並且說它對於我正在使用的憑據是成功的。不過,我可以從的locahostwww.MYDOMAINNAME.com或服務器名稱從我的cPanel改變主機,它仍然說,這是一個成功的連接。如果成功,那爲什麼不運行我的SQL?

問題:我的代碼下面有什麼問題嗎?如果沒有,有沒有更好的方法來測試發生了什麼?

說明:我的控制檯中的輸出是「Error [object Object]」。它成功地擊中了search.php,所以我不認爲這是一個文件路徑問題。我也在頁面加載時運行PHP,而不是通過AJAX來完成,而且一切似乎都很順利。我能得到一些結果回來時,我硬編碼值$查詢


文件結構:

(ROOT FOLDER) 
    index.php (where the form is) 
    (PHP FOLDER) 
    search.php 
    (JS FOLDER) 
    search.js 

HTML:

<form action="php/search.php" method="post"> 
    <input type="search" class="main-search" name="query" /> 
    <div class="btn btn-lg btn-primary">Search</div></form> 
</form> 

的jQuery:

$(function() { 
    $(".main-search").keyup(function() { 
     search($(this).val()); 
    }); 
}); 

function search(query) { 
    $.ajax({ 
     url:"./php/search.php", 
     type:"POST", 
     dataType:"json", 
     data: { query:query }, 
     success: function(data) { 
      $(".result").html(data); 
     }, 
     error: function(data) { 
      $(".result").html(data);  
     } 
    });  
} 

PHP:

<?php 
    $query = $_POST["query"]; 

    $link = mysqli_connect('localhost', 'USER', 'PASS') or die ('Error connecting to mysql: ' . mysqli_error($link)); 

    mysqli_select_db($link, 'DB_NAME'); 

    /* check connection */ 
    if (mysqli_connect_errno()) { 
     echo mysqli_connect_error(); 
     exit(); 
    } 

    /* Select queries return a resultset */ 
    if ($result = mysqli_query($link, "SELECT actual FROM icons WHERE synonym = '$query'")) { 
     $row = mysqli_fetch_array($result); 
     echo $row["actual"]; 

     mysqli_free_result($result); 
    } 
    else { 
     echo "No results found."; 
    } 

    mysqli_close($con); 
?> 
+0

按F12在Chrome中,並確保Ajax調用corectly或不發。檢查它是否返回一些內容。 – Tejas

+0

在Developer Tools的網絡選項卡中,它返回Error:[object Object]。在我提出這個錯誤走開通過添加isset()函數: – Jon

+0

能否請您發佈完整的錯誤部分 – Tejas

回答

0

嘗試改變AJAX調用數據paramenter這個

data: { 'query':query } 

我認爲這應該工作

+0

所以我快到了......現在正在執行搜索。但不是關鍵。它似乎沒有將搜索框值傳遞給PHP腳本。爲什麼不? – Jon

+0

嘗試在keyup()中通知chk,如果它被調用。 – Tejas

0

只要瀏覽和運行PHP代碼,而不是直接依賴於一個AJAX調用測試。如果存在連接錯誤,那麼它應該顯示在瀏覽器的echo語句中。

請確保您有PHP錯誤報告運行。