2015-05-29 15 views
5

Próbuję pobrać trzy kolumny z bazy danych MySql. Mogę pobrać zawartość, ale to nie jest to, czego potrzebuję. Potrzebuję tylko zawartość jako tablicę ciągów, aby można ich użyć do zapełnienia widoku listy w moim kodzie java.Jak pobrać tylko zawartość bazy danych za pomocą skryptu PHP

Obecna odpowiedź od mojego skryptu jest:

{ ["UID"]=> string(1) "1" ["UserName"]=> string(7) "[email protected]" ["Subject"]=> string(15) "My Android Post"}object(stdClass)#4 (3) { ["UID"]=> string(1) "2" ["UserName"]=> string(7) "[email protected]" ["Subject"]=> string(15) "My Android Post"} 

Potrzebuję coś takiego jak pokazano poniżej w tablicy String lub listy:

1 [email protected] My Android Post 
2 [email protected] My Android Post 

Jak mogę uzyskać tylko wartość przechowywana w kolumnie w PHP. Jestem nowy w skryptach PHP, więc pomóż mi w rozwiązaniu tego problemu.

Mój obecny skrypt PHP jest tak jak pokazano poniżej:

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "iFocusBlogs"; 



$obtainedUserName = 1;   

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql="SELECT UID, UserName, Subject FROM AndroidTable WHERE Status ='" .$obtainedUserName. "'"; 
$result=mysqli_query($conn,$sql); 

while($obj = $result->fetch_object()){ 
var_dump($obj); 

} 

$conn->close(); 
?> 

Proszę dać mi znać, co zmiana muszę zrobić w skrypcie dostać tylko zawartość kolumn. Wszystkie sugestie są mile widziane. Z góry dziękuję.

Odpowiedz

2

Można również użyć mysqli_fetch_row()

/* fetch associative array */ 
    while ($row = mysqli_fetch_row($result)) { 
     printf ("%s (%s)\n", $row[0], $row[1]).PHP_EOL; 
    } 

Try This Updated

$query="SELECT UID, UserName, Subject FROM AndroidTable WHERE Status ='" .$obtainedUserName. "'"; 

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

    /* fetch associative array */ 
    while ($row = $result->fetch_assoc()) { 
     printf ("%s (%s)\n", $row["UID"], $row["UserName"],$row["Subject"]); 
    } 
} 
+0

Lot bliżej Mam odpowiedź poniżej: 1 (abc @ 123) 2 (abc @ 123), otrzymuję wartość powtarzających się kolumn i wyświetlam wartości tylko jednego wiersza. Czy to może być rozwiązane? – Keshav1234

+0

W tej chwili otrzymuję odpowiedź: 1 (abc @ 123) (Mój Android Post) 2 (abc @ 123) (Mój Android Post), \ n nie działa, czy mogę wiedzieć dlaczego? – Keshav1234

+0

do uzyskiwania danych z tego wiersza użyj 'printf ("% s (% s) \ n ", $ wiersz [0], $ wiersz [1], $ wiersz [2]);' – Saty

2

Użyj fetch_array zamiast . Możesz potrzebować dodatkowych modyfikacji, aby uzyskać macierz dokładnie tak, jak chcesz, ale przynajmniej jest o wiele bliżej.

Jeśli jako drugi parametr zostanie określony MYSQL_NUM, otrzymasz tablicę bez kluczy i tylko indeksów numerycznych. Ta tablica jest wystarczająco czysta, aby można ją było dalej przetwarzać.

Można wyjście tablicy za pomocą pętli for ...

foreach($array as $item) { 
    echo $item . '<br>'; 
} 

lub użyj implode() ...

echo implode($array); 

lub użyj json_encode() ...

echo json_encode($array); 

It wszystko zależy od tego, jak dokładnie chcesz pokazać swoją tablicę.

Funkcje takie jak print_r i var_dump są przydatne do sprawdzania zawartości tablic i innych zmiennych, ale raczej nie wyprowadzają tej treści w formacie, który może być wykorzystany przez programy zewnętrzne.

+0

trol mam poniżej odpowiedzi po tym, jak stosowane fetch_array: Wartość odpowiedzi jest matryca (6) {[0 ] => ciąg (1) "1" ["UID"] => ciąg (1) "1" [1] => ciąg (7) "abc @ 123" ["Nazwa użytkownika"] => ciąg (7) " abc @ 123 "[2] => ciąg (15)" Mój post na Androida "[" Temat "] => ciąg (15)" Mój post na Androida "} array (6) {[0] => ciąg (1)" 2 "[" UID "] => ciąg (1)" 2 "[1] => ciąg (7)" abc @ 123 "[" Nazwa użytkownika "] => ciąg (7) "abc @ 123" [2] => ciąg (15) "Mój post na Androida" ["Temat"] => ciąg (15) "Mój post na Androida"} Nie mogę usunąć tych części (1) i [ " " ] Części? – Keshav1234

+0

Część '[string (1)]' jest tym, co otrzymujesz, gdy używasz 'var_dump'. Możesz użyć 'print_r', aby uzyskać bardziej przejrzysty wydruk, lub możesz po prostu przejrzeć i wydrukować tablicę i tak, jak chcesz. Dodałem trochę dodatkowych informacji do odpowiedzi. W każdym razie prawdopodobnie będziesz musiał * trochę * kodować siebie, chyba że znajdziesz funkcję, która wyprowadza ją dokładnie tak, jak tego potrzebujesz. – GolezTrol

2

Można uzyskać dostęp do obiektu '->' symbol

$tCont=""; 
while($obj = $result->fetch_object()){ 
//var_dump($obj); 
$tCont.='<tr><td>'.$obj->UID.'</td><td>'.$obj->UserName.'</td><td>'.$obj->Subject.'</td></tr>'; 

} 
echo $tCont; 
+0

Mam następującą odpowiedź: Wartość odpowiedzi jest abc @ 123 My Android post Jego daje mi wartość drugiego rzędu i nie oba pierwszym rzędem i drugim rzędzie. Czy istnieje sposób na usunięcie tagów tr i td? – Keshav1234

+0

można usunąć tr td, jeśli nie chcesz, aby –

+0

ok. Spróbuję ci powiedzieć – Keshav1234

1

zmienić select, prawdopodobnie złączyć kolumny :

$sql="SELECT CONCAT (UID,' ' , UserName,' ', Subject) AS myresult FROM AndroidTable WHERE Status =" . $obtainedUserName ; 

$result = $conn->query($sql); 

zastosowanie FETCH_ASSOC i drukowania każdy wiersz:

while($row = $result->fetch_assoc()){ 

echo $row['myresult']; 

} 
+0

@ Keshav1234 czy to działa? –

+0

Mam ten błąd: mysqli_fetch_assoc() oczekuje, że parametr 1 będzie mysqli_result, null podany w – Keshav1234

+0

@ Keshav1234 Mam edited the kod, wypróbuj teraz –

Powiązane problemy