2015-10-19 82 views
1

我試圖訪問MySQL的數據庫與PHP爲了填充一個JavaScript數組,但數組總是空的。之前,我有一個'www-data @ localhost'訪問錯誤,但是無法弄清楚並自回退代碼。任何人可以分享任何見解?使用PHP進行MySQL查詢不返回預期數據

JS:

var arrayPOIs = []; 

function getPoints(){ 
    $.get('getdata.php', function(data){ 
     arrayPOIs = data; 
    }); 
} 

訪問getdata.php:

$mysqli = new mysqli("localhost", "user", "pass", "test"); 

if (mysqli_connect_errno()) 
{ 
    echo("Connect failed: ") . mysqli_connect_error(); 
    exit(); 
} 

$query = "SELECT * FROM points"; 

$result = mysqli_query($query) or die(mysqli_error()); 

$potential = mysqli_fetch_array($result); 

echo json_encode($potential); 

我的表的內容試圖輸出到一個數組。在我的瀏覽器控制檯中,它總是顯示爲空。如:

arrayPOIs 
"" 

我想我可能會遇到與數據庫連接查詢過程有關的問題。雖然,我對此很新,而且我迷路了。有任何想法嗎?

此外,如何以及在哪裏可以檢查PHP正在做什麼實時操作,即錯誤消息?

編輯:

跟進的評論:

添加 "json"作爲第三個參數後
  • ,該arrayPOIs VAR成爲(在FF的控制檯)Array [ ]

  • getdata.php頁面直接訪問時出空(空白)

EDIT2:

NIRANJANÑRaju的幫助(1)後,它的部分固定。我的查詢調用錯誤的PHP語法。現在,我的對象形成了病態。我越來越:

{ 「0」: 「1」, 「ID」: 「1」, 「1」: 「poi_teste1」, 「名」: 「poi_teste1」, 「2」:「41.1953 「 」緯度「: 」41.1953「, 」3「: 」 - 8.60134「, 」經度「:」 - 8。60134" }

但我需要這樣的東西(JSON):

name: poi_teste1, 
latitude: 3464357247, 
longitude: 247245672 

每個表中的行,這是這樣的:

id | name | latitude | longitude 
#1 | string | float | float 
#2 | string | float | float 
#3 | string | float | float 
#4 | string | float | float 
+0

嗨,在json_encode之前添加一個數組來確保你的數組不是空的 – CodeIsLife

+0

當你在'$ .get'函數中添加'json'作爲第三個參數時它會工作嗎? –

+0

另外,請從瀏覽器訪問'getdata.php'頁面,並告訴我們它返回的內容。 –

回答

2

你已經錯過了連接對象mysqli_query()

這樣的變化

$result = mysqli_query($mysqli,$query) or die(mysqli_error()); 
        ^ ^

編輯

如果您獲得更多的1行,像

array(
    0 => id,name,lat and long, 
    1 => id,name,lat and long, 
    2 => id,name,lat and long, 
); 

對於上述樣的結果,輸出是正確的。要訪問AJAX的值,使用for() loop

而且,因爲你不希望指數,記得fetch_assoc

$potential = mysqli_fetch_array($result);

更改爲

$potential = mysqli_fetch_assoc($result);

更多。

+0

這就是它!!但不幸的是,我認爲編碼對象時還有其他一些問題。我將在上面的問題中添加詳細信息。你能幫忙嗎? – Joum

+0

你確定添加它。但上面的答案正在起作用。我檢查了它。 –

+0

並嘗試添加'error_reporting(E_ALL)'。我們會得到確切的錯誤。 –

0

只是以供將來參考,如果它可以幫助別人:後被大大由@Niranjanñ拉朱和@FirstOne幫助它工作,因爲我打算:

JS:

function getPoints(){ 
    $.get('getdata.php', function(data){ 
    //gotta do something with that data! :) 
    arrayPOIs = data; 
    }, "json"); 
} 

訪問getdata.php :

$mysqli = new mysqli("localhost", "user", "pass", "test"); 

/* check connection */ 
if (mysqli_connect_errno()) 
{ 
    echo("Connect failed: ") . mysqli_connect_error(); 
    exit(); 
} 

$query = "SELECT * FROM points"; 

$resultArray = array(); 
$index = 0; 

if ($result = $mysqli->query($query)) { 

    /* fetch associative array */ 
    while ($row = $result->fetch_assoc()) { 
     $resultArray[$index] = $row; 
     $index++; 
    } 

    /* free result set */ 
    $result->free(); 
} 

echo json_encode($resultArray); 

小記(我會弄清楚單獨:):

  • 在MySQL DB中,latitudelongitude是浮點型列。這個解決方案沒有考慮到這一點,因爲它們是以字符串形式出現的。我重新調查,無論是在PHP或JS我可以parseFloat他們。
+0

那你能[mysqli_fetch_all](http://php.net/manual/en/mysqli-result.fetch-all.php)嗎?只需更改'resulttype',以便它不返回索引,只是關聯數組。它可能看起來像這樣:'$ potential = mysqli_fetch_all($ result,MYSQLI_ASSOC);' – FirstOne