2015-06-28 13 views
5

Próbuję uzyskać wszystkie wiersze z mojej bazy danych MySQL za pomocą następującego kodu:Zachowaj podziały wierszy w mysqli FETCH_ASSOC() PHP

$sql = "SELECT * FROM myTable"; 
$result = $conn->query($sql); 
    while($row = $result->fetch_assoc()) { 
     $output[]=$row; 
    } 
echo json_encode($output); 

Moje pytanie brzmi, jak zachować podziały wiersza przy użyciu tego kodu? Mogę zachować podziały wierszy przy użyciu nl2br(), gdy muszę konkretny ciąg np

nl2br($_row['fieldName']); 

ale chcę wiedzieć, jak mogę używać tego samego nl2br() podczas pobierania wynik w tablicy?

Poleciłem również this question, ale to wyjaśnia tylko jeden ciąg, a nie tablicę.

Jeśli nie ma sposobu, aby to zrobić, zasugeruj mi inny sposób robienia tego.

+5

'$ output [] = array_map (" nl2br ", $ row);'?! – Rizier123

+0

@ Rizier123 To działało, Wielkie dzięki! – IAmAndroid

+0

Nie ma za co. – Rizier123

Odpowiedz

1

Za pomocą array_map można wywołać funkcję, więc z wartością każdego $row można uzyskać wartości.

$sql = "SELECT * FROM myTable"; 
$result = $conn->query($sql); 
    while($row = $result->fetch_assoc()) { 
     $output[]=array_map("nl2br",$row); 
    } 
echo json_encode($output); 
2

Musisz dokładnie wiedzieć, jaki rodzaj przepływu tekstu Twój json musi wysłać. Używanie funkcji php nl2br zastąpi znaki nowej linii tagiem HTML o nazwie "br" używanym do wyświetlania linebreaków, gdy przeglądarka wyrenderuje HTML. Jeśli aplikacja, której używasz z tym przepływem json, spodziewa się zwykłego tekstu, a nie HTML, użycie nl2br nie jest właściwym rozwiązaniem. W tym przypadku proponuję zastąpić znaki nowej linii sekwencją ze znakiem "\ n" w ciągu znaków przed wysłaniem jej jako parametru do funkcji json_encode, a także do obsługi dekodowania w Twoim kodzie json flow odpowiednio do tego, co chcesz zrobić z tym, html lub cokolwiek innego. W takim przypadku pomocna może być this question.

Powiązane problemy