2016-04-25 20 views
4

我想問一下如何顯示多個row的數據而不是隻有一個row。下面的代碼將只顯示一行記錄,而不是多個記錄可用。我在這裏使用mysqli_prepare陳述。或者問題出在我的android studio編碼上?我的應用程序使用登錄功能和編碼如下所示。php腳本只顯示一行數據而不是很多在android工作室

<?php 
$host="DB_HOST"; 
$user="DB_USER"; 
$password="DB_PASSWORD"; 
$db="DB_NAME"; 

$con = mysqli_connect($host,$user,$password,$db); 

$parentic=$_POST["ParentIC"]; 
$password=$_POST["Password"]; 

$selectquery = mysqli_prepare($con, "SELECT Parents_Data.Name, Student_List.StudName, Student_List.StudIC, Student_List.Form,Student_List.Class,discipline_record.Date,discipline_record.RulesCode, discipline_record.TypesofMistakes,discipline_record.Punishment FROM discipline_record LEFT JOIN Student_List ON discipline_record.StudIC = Student_List.StudIC LEFT JOIN Parents_Data ON Student_List.ParentIC = Parents_Data.ParentIC WHERE Parents_Data.ParentIC = ? AND Parents_Data.Password = ? "); 
mysqli_stmt_bind_param ($selectquery, "ss", $parentic, $password); 
mysqli_stmt_execute($selectquery); 

mysqli_stmt_store_result($selectquery); 
mysqli_stmt_bind_result($selectquery,$name,$studname,$studic,$form,$classs,$ddate,$code,$mistakes,$punishment); 

$user = array(); 



while(mysqli_stmt_fetch($selectquery)) 
{ 
    $user[name]=$name; 
    $user[studname]=$studname; 
    $user[studic] = $studic; 
    $user[form]=$form; 
    $user[classs]=$classs; 
    $user[ddate]=$ddate; 
    $user[code]=$code; 
    $user[mistakes]=$mistakes; 
    $user[punishment]=$punishment;    


} 

    echo json_encode($user); 

    mysqli_stmt_close($selectquery); 


mysqli_close($con); 

?>       
+0

使用'foreach'循環,然後再試一次。 –

+0

@ChoncholMahmud你能指導我嗎?因爲我是新手。謝謝 –

+0

在while循環內移動你的echo json_encode – RST

回答

1

我會去這樣的事情:

$userGroup = array(); 
$user = array(); 

while(mysqli_stmt_fetch($selectquery)) 
{ 
    $user[name]=$name; 
    $user[studname]=$studname; 
    $user[studic] = $studic; 
    $user[form]=$form; 
    $user[classs]=$classs; 
    $user[ddate]=$ddate; 
    $user[code]=$code; 
    $user[mistakes]=$mistakes; 
    $user[punishment]=$punishment; 

array_push($userGroup,$user);    


} 

echo json_encode($userGroup); 
+0

感謝您的幫助,但錯誤發生 –

+0

也許封裝$用戶在另一個json_encode。如果你從這開始,你可能會考慮使用PDO而不是mysqli_connect()。什麼是錯誤?它是否與字符串有關? – nyluje

+0

顯然這是一個登錄功能。在應用您的編碼之後,它無法登錄。 –

1

這可能是更容易使用2維數組

$users = array(); 

while(mysqli_stmt_fetch($selectquery)) 
{ 
    $users[] = array(); 
    $users[][name]=$name; 
    $users[][studname]=$studname; 
    $users[][studic] = $studic; 
    $users[][form]=$form; 
    $users[][classs]=$classs; 
    $users[][ddate]=$ddate; 
    $users[][code]=$code; 
    $users[][mistakes]=$mistakes; 
    $users[][punishment]=$punishment;   

} 

foreach ($users as $user) 
    echo json_encode($user); 
+0

您可能錯過了我在'while'循環中將'$ user'更改爲'$ users' – RST

+0

我的應用程序使用登錄功能實現。使用你的編碼後,它現在不能登錄到應用程序..但它沒有錯誤 –

0

它看起來像你正在做正確的查詢,但是當使用一個平面數組而不是二維來獲取結果。

此外,儘量避免公開發布您的數據庫憑據:)這是相當危險的。

所以,你應該做這樣的事情:

<?php 
$host="YOUR_DB_HOST"; 
$user="YOUR_DB_USER"; 
$password="YOUR_DB_USER_PASSWORD"; 
$db="YOUR_DB_NAME"; 

$con = mysqli_connect($host,$user,$password,$db); 

$parentic=$_POST["ParentIC"]; 
$password=$_POST["Password"]; 

$selectquery = mysqli_prepare($con, "SELECT Parents_Data.Name, Student_List.StudName, Student_List.StudIC, Student_List.Form,Student_List.Class,discipline_record.Date,discipline_record.RulesCode, discipline_record.TypesofMistakes,discipline_record.Punishment FROM discipline_record LEFT JOIN Student_List ON discipline_record.StudIC = Student_List.StudIC LEFT JOIN Parents_Data ON Student_List.ParentIC = Parents_Data.ParentIC WHERE Parents_Data.ParentIC = ? AND Parents_Data.Password = ? "); 
mysqli_stmt_bind_param ($selectquery, "ss", $parentic, $password); 
mysqli_stmt_execute($selectquery); 

mysqli_stmt_store_result($selectquery); 
mysqli_stmt_bind_result($selectquery,$name,$studname,$studic,$form,$classs,$ddate,$code,$mistakes,$punishment); 

$user = array(); 
$users = array(); 


while(mysqli_stmt_fetch($selectquery)) 
{ 
    $user[name]=$name; 
    $user[studname]=$studname; 
    $user[studic] = $studic; 
    $user[form]=$form; 
    $user[classs]=$classs; 
    $user[ddate]=$ddate; 
    $user[code]=$code; 
    $user[mistakes]=$mistakes; 
    $user[punishment]=$punishment;    

    $users[] = $user; 

} 


mysqli_stmt_close($selectquery); 
mysqli_close($con); 
echo json_encode($users); 
+0

首先感謝您的幫助,但它使應用程序無法登錄TT –

+0

@AdrianLoh你的意思是你的應用程序無法登錄到數據庫? 我改變了您的憑據 - 在公共場合分享它們是個不好的主意。所以,你應該改變第一個四行腳本 –

+0

nope。顯然這個應用程序是用登錄功能實現的。使用你的編碼後,它不能登錄到應用程序。 @s_mart –

相關問題