2016-02-16 84 views
2

我通過這個php腳本成功連接到數據庫,但它沒有返回任何值,即使它已連接。我正在網絡瀏覽器上檢查結果,它只是返回一個空白屏幕。我使用了相同的腳本(不同的查詢)來訪問數據庫中的其他兩個表,它們都工作正常。這裏是我的代碼:用php腳本連接到數據庫,但沒有返回值

<?php 
$username = "xx"; 
$password = "xxx"; 
$host = "xxxxx"; 
$database="xxxxx"; 

$server = mysql_connect($host, $username, $password); 
$connection = mysql_select_db($database, $server); 

$myquery = "SELECT `AUTHOR`, `In_order` from `authors`"; 

$query = mysql_query($myquery); 

if (! $query) { 
    echo mysql_error(); 
    die; 
} 

$data = array(); 

for ($x = 0; $x < mysql_num_rows($query); $x++) { 
    $data[] = mysql_fetch_assoc($query); 
} 

echo json_encode($data);  

mysql_close($server); 


?> 

這可能是一些愚蠢的錯誤,我過來看了,但我一直停留在其上更長的時間比我要!在此先感謝您的任何反饋意見

+0

你完全確定「authors」表不是空的嗎?它有除'AUTHOR'和'In_order'以外的其他列嗎?嘗試選擇這些,並讓我們知道發生了什麼。 –

+0

請閱讀文檔:http://php.net/manual/en/function.mysql-fetch-assoc.php(包括第一個警告),並將您的mysql_fetch_assoc調用與示例中的調用進行比較。 – steven

+0

如果你懷疑你沒有得到任何數據,也許你應該回應'mysql_num_rows()'的結果來確定是這種情況。 – steven

回答

0

嘗試在本地對某些數據進行編碼並返回一切正常。 我需要更改選擇以匹配我的數據

所以我95%確定問題出在您的查詢/ db設置。

我會首先檢查您的數據庫中的列是否真的被稱爲AUTHOR和'In_order'以及大寫字母。

MySQL的名稱可以是大小寫敏感取決於你的數據庫服務器設置,這可能是問題

旁註:如果你可以研究的mysqli和PDO連接到DB的,而不是被棄用MySQL的。

+0

感謝您的反饋,我有正確的列名正是如此不幸的問題仍然沒有解決,現在更明顯地證實它已經成功連接! –

0

試試這個:

$myquery = "SELECT `AUTHOR`, `In_order` from `authors`"; 
$query = mysql_query($myquery); 
$num = mysql_num_rows($query); 
var_dump($query); 
var_dump($num); 
echo mysql_error(); 

,並告訴我們這一切說。

編輯:好的,所以它的表格中有231行,因爲var_dump($num)表示。現在讓我們嘗試並最終得到他們,但在一個稍微更有效的方式:

while ($row = mysql_fetch_assoc($query)) { 
    $data[] = $row; 
} 
echo json_encode($data); 

我有一種感覺,你的「for」循環和mysql_fetch_assoc()裏面就是玩的招數和你在一起,因爲兩者都使用不同內部櫃檯。

+0

'類型(mysql結果)的資源(4)int(231)'這就是它返回的結果 –

+0

請參閱我編輯的答案。 –

相關問題