Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapytanie - przyrównanie - pomijanie wybranych znaków
Forum PHP.pl > Forum > Bazy danych > MySQL
karolski
Mam zserializowaną tablicę (o różnych wymiarach, wartościach 1 lub 0) w bazie danych, teraz chcę robić zapytania, kóre mi wybiorą np rekordy które mają w 2 kolumnie i 2 wierszu wartość 1, mam taką tablicę :


  1. a:4:{
  2. i:0;a:4:{i:0;i:0; i:1;i:0; i:2;i:0; i:3;i:0;}
  3. i:1;a:4:{i:0;i:0; i:1;i:1; i:2;i:0; i:3;i:0;}
  4. i:2;a:4:{i:0;i:0; i:1;i:0; i:2;i:0; i:3;i:0;}
  5. i:3;a:4:{i:0;i:0; i:1;i:0; i:2;i:0; i:3;i:0;}}
  6.  
  7. aby była bardziej czytelna dodałem spacje i entery


teraz wymysiłem, że zrobie zpaytanie które znajdzie mi tak isam string:

  1. "i:1;a:4:{i:0;i:0; i:1;i:1;"


lecz pojawiają się tu 2 wartości które mogą być różne, jak mogę dodać do zapytania tzw. gwiazdkę lub pominięcie tego znaku przy dopasowywaniu? chodzi mi o coś takiego:
  1. "i:1;a:".*.":{i:0;i:".*."; i:1;i:1;"


nie mogę znaleźć żadnych informacji na ten temat, nie wiem jak to sformułować winksmiley.jpg
erix
A możesz powiedzieć, po co? Zdeserializuj do wartości.

PS. Przydadzą Ci się funkcje array_keys i array_values.
karolski
Potrzebuje znaleźć rekordy z odpowiednimi wartościami w tablicy(polu w tabeli), oczywiście mógłbym pobrać te wartości i przefiltrować je w php, ale wolał bym w zapytaniu SQL.
Crozin
Jeżeli chcesz robić cokolwiek poza odczytywaniem/zapisywaniem takich danych na poziomie bazy danych powinieneś stworzyć normalną, naturalną dla relacyjnych baz danych strukturę, a nie wypychać tam zserializowaną tablicę.

Od biedy: REGEXP().
karolski
Dzięki za odpowiedź!

Stosuję serializację ponieważ pojawiają się tam bardzo różne typy danych np.:
- normalny tekst
- tablica 1 wymiarowa o dowolnych wymiarach
- tablica wielowymiarowa o dowolnych wymiarach

są to odpowiedzi zbierane z różnych typów pytań w ankiecie.

Pytania i odpowiedzi do zamkniętych pytań są w bazie jako normalne rekordy, zaś odpowiedzi serializuje do jednego pola. Wydaje mi się, że to dobre rozwiązanie, miałem problem z filtrowaniem tych odpowiedzi ale dzięki REGEXP() mogę to zrobić.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.