2013-04-10 91 views
0

我正在嘗試使用PhP從mysql檢索數據。我只是測試我的PHP文件。如果這有效,那麼我會開始努力將這些結果發送到我的Android應用程序。使用PHP從數據庫中檢索數據

顯示的PHP結果始終爲空。我可以確認數據庫中有數據。

數據庫表叫:

人口 - 字段有:ID,性別,城市,州

的結果總是:

{ 「成功」:1, 「數據」: { 「ID」:空, 「性別」:空, 「城市」:空, 「狀態」:空}]}

我不知道什麼是錯的代碼:

<?php 
    include("db_config.php"); 

    $response = array(); 

    $gender = 'Male'; 

    // get a product from products table 
    $result = mysql_query("SELECT * FROM population WHERE gender = '$gender'"); 

    if (!empty($result)) 
    { 
    // check for empty result 
    if (mysql_num_rows($result) > 0) 
    { 

     $result = mysql_fetch_array($result); 

     $data = array(); 

     $data ["id"] = $row["id"]; 
     $data ["gender"] = $row["gender"]; 
     $data ["city"] = $row["city"]; 
     $data ["state"] = $row["state"]; 

     // success 
     $response["success"] = 1; 

     $response["data"] = array(); 
     array_push($response["data"], $data); 
     echo json_encode($response); 
     } 
    else 
    { 
     $response["success"] = 0; 
     $response["message"] = "No data found"; 

     echo json_encode($response); 
    } 
    } 
    else 
    { 

    $response["success"] = 0; 
    $response["message"] = "No data found"; 
    echo json_encode($response); 
    } 
    ?> 

有人可以幫我解決這個PHP代碼?我一直在爲這最後三天工作得不到任何解決方案?

謝謝!

+0

您是否嘗試過這樣的...'$結果= mysql_query(」 SELECT * FROM population WHERE gender ='「。$ gender。」'「);' – 2013-04-10 11:25:23

回答

1

改變這種

$result = mysql_fetch_array($result); 

到下面的代碼

$row = mysql_fetch_array($result); 

使用獲得的所有數據

while($row = mysql_fetch_array($result)) { 
    $data = array(); 
    $data ["id"] = $row["id"]; 
    $data ["gender"] = $row["gender"]; 
    $data ["city"] = $row["city"]; 
    $data ["state"] = $row["state"]; 
    // success 
    $response["success"] = 1; 
    $response["data"][] = array(); 
    array_push($response["data"][], $data); 
} 
echo json_encode($response); 
+0

mysql_fetch_array($ res,MYSQL_ASSOC)* – DarkBee 2013-04-10 11:26:49

+0

@Yogesh Suthar:$行是問題。改變它很好,但爲什麼我只看到一個結果,我應該得到三個?任何想法呢? – TheDevMan 2013-04-10 12:04:29

+0

@TheDevMan因爲你沒有用'foreach'或'while while循環迭代結果。看到編輯回答'while while循環..... – 2013-04-10 14:16:33

2

立即嘗試,

if (mysql_num_rows($result) > 0) 
    { 

     $row = mysql_fetch_array($result); // wrong initialize to the result value 

     $data = array(); 

     $data ["id"] = $row["id"]; 
     $data ["gender"] = $row["gender"]; 
     $data ["city"] = $row["city"]; 
     $data ["state"] = $row["state"]; 
    } 
+0

$ row是問題所在。改變它很好,但爲什麼我只看到一個結果,我應該得到三個?任何想法呢? – TheDevMan 2013-04-10 12:05:18

0

在PHP的可變放置單引號之間時,不進行評價。

"SELECT * FROM population WHERE gender = '$gender'" 

嘗試連接:

$query = "SELECT * FROM population WHERE gender = '" . $gender "'"; 
mysql_query($query); 

PS:除了這個錯誤,我要告訴你最好不要再使用mysql_ *功能,使用庫MySQLi或PDO!

+2

不,不需要這樣做的連接。在'('''')'雙引號(''''''''''''''''''''''''''''''''。 PHP解析這個值。 – Ranjith 2013-04-10 11:29:01

+0

@Ranjith你有沒有參考?經驗法則是:在雙引號之間,變量擴展,在單引號之間,它們不會。但是,我測試過了,它可以像你說的那樣工作,但我找不到任何文檔。 – Borniet 2013-04-10 11:40:34

+0

這是錯的。當PHP圍繞單引號(如'$ gender'')進行分析時,PHP不會解析變量。但它可以解析像這樣的賦值或執行方式'「........'$ gender'......」'。這是我謙卑的要求,你嘗試一個簡單的'PHP'程序,並檢查出來.. – Ranjith 2013-04-10 11:47:49