@NullUserException ఠ_ఠ Zgadzam się, że wstawienie serializowanych wartości do DB po prostu absolutnie pali oczy, ale nie znasz jego sytuacji - może to bardzo dobrze uzasadnione.
Później wystarczy użyć json_decode (), aby zdekodować ciąg z bazy danych.
Wszystko inne jest bezużyteczne, JSON utrzymuje nienaruszoną relację tablicową do późniejszego użycia!
json_encode($data)//converts an array to JSON string
json_decode($jsonString)//converts json string to php array
DLACZEGO JSON: Możesz go używać z większością języków programowania, łańcuch utworzony przez funkcję serialize () php jest czytelny tylko w PHP i nie będziesz chciał przechowywać takich rzeczy w swoich bazach danych, szczególnie jeśli baza danych jest współużytkowana przez aplikacje napisane w różne języki programowania
Działa to doskonale w przypadku tablic jedno- lub wielowymiarowych i moim zdaniem powinna to być zaakceptowana odpowiedź. Rozważ także dodanie wartości true jako drugiego parametru.
Nie, nie chcesz przechowywać tego jako jednego ciągu w swojej bazie danych.
Możesz użyć, serialize()ale spowoduje to, że Twoje dane będą trudniejsze do wyszukiwania, trudniejsze do pracy i marnuje miejsce.
Możesz także wykonać inne kodowanie, ale ogólnie jest ono podatne na ten sam problem.
Głównym powodem posiadania DB jest to, że możesz wykonywać takie prace w trywialny sposób. Nie potrzebujesz tabeli do przechowywania tablic, potrzebujesz tabeli, którą możesz reprezentować jako tablicę.
Przykład:
id | word
1|Sports2|Festivals3|Classes4|Other
Po prostu wybrałbyś dane z tabeli za pomocą SQL, zamiast tabeli, która wygląda następująco:
id | word
1|Sports|Festivals|Classes|Other
To nie jest sposób, w jaki ktokolwiek projektuje schemat w relacyjnej bazie danych, ale całkowicie nie spełnia jego celu.
@MarcB To sprawia, że kodowanie jest idiotyczne, standardowe, podatne na mniej błędów i łatwe do eksportu z powrotem do tablicy. Czy powinien użyć innego stołu? Prawdopodobnie. Czy to jest lepsze niż wszyscy mówią implode? Absolutnie.
Prawidłowa odpowiedź na to pytanie brzmi: nie wstawiaj wartości zserializowanych do RDBMS. To jest rodzaj rzeczy, która powinna przywołać ptaków drapieżnych .
@timdev: json-escaping może w niektórych sytuacjach odpowiadać ucieczce SQL, ale w zależności od tego po prostu cię w końcu spali. JSON używa odwrotnych ukośników - co zrobić, jeśli korzystasz z DB, który nie rozpoznaje odwrotnych ukośników i używa podwójnych cudzysłowów do ucieczki? np. ''zamiast \'?
Chociaż zgadzam się z zasadą wyrażoną tutaj (normalne formy są dobre, używanie DB do struktury jest dobre, duh), każda odpowiedź, która zaczyna się od „Nie, nie chcesz ...” wywołuje dzwonki w mojej głowie. Nie masz pełnego kontekstu pytania pytającego i możesz w to uwierzyć lub nie, mogą mieć doskonały powód do denormalizacji tych konkretnych danych i przechowywania ich w jednym polu. Nie, nie jesteś wszechwiedzący; NIE wiesz, czego chce pytający. Umieść swoje opinie w komentarzu , a nie w odpowiedzi , proszę.
Możesz także użyć: „print_r ($ array, false);”, ponieważ spowoduje to wydrukowanie tablicy bez zwracania wartości. Jeśli podano true, print_r () nie wydrukuje samodzielnie i po prostu zwróci ciąg. Więcej na: php.net/manual/en/function.print-r.php
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.