Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Przedszkole _ [MySQL][PHP]przeszukanie stringa z bazy danych

Napisany przez: matuty 5.03.2021, 19:23:11

witam głowię sie nad rozwiązaniem danego problemu a mianowicie
mam 4 wiersze w bazie

{"id:1","liczba:1"}
{"id:2","liczba:2,3"}
{"id:3","liczba:3,4"}
{"id:4","liczba:3"}

i potrzebuje zapytanie do bazy, które wyszuka id wiersza który w "liczba" zawiera liczbę 3
id 2 i 3 zawierają po dwa elemety bedace stringiem liczb oddzielonych przecinkiem w tym miejscu pojawia się problem
jak przeszukać tego stringa w poszukiwaniu liczby 3
na zmiennych nie ma żadnego problemu strpos() itp. jednak zeby zwrócić id wierszy które zawierają liczbę 3 mam już problem

select id from liczby where liczba = 3 zwróci tylko id 4 wiadomo jednak id 2 i 3 też zawierają ta liczbę


pomoże ktoś?

Napisany przez: viking 5.03.2021, 20:33:05

Zacznij od poprawnego typu danych, potem https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html

Napisany przez: matuty 5.03.2021, 21:51:11

Tak napisałem to niby w json zeby estetycznie przedstawić tylko wiersze bazy jak nie znasz odpowiedzi na pytanie to nie wtrącaj prosze swoich 5 groszy

Napisany przez: viking 5.03.2021, 21:56:56

Tak. Doskonale wiem że to json który jest natywnie obsługiwany przez mysql. Jak Ci się nie chce nawet zajrzeć do linku albo go nie rozumiesz to może się hamuj z takimi odpowiedziami.

Napisany przez: matuty 5.03.2021, 22:17:19

Masz rację przepraszam

Napisany przez: LowiczakPL 6.03.2021, 09:45:34

https://dev.mysql.com/doc/refman/8.0/en/regexp.html#function_regexp-like

Napisany przez: matuty 6.03.2021, 18:43:10

nie mogę znaleźć przykładów kombinuje i nic z tego nie wychodzi
jesteście w stanie zastosować to do podanego przykładu z liczbami?

  1.  
  2. $q = "SELECT * FROM `liczby` WHERE REGEXP_LIKE(`liczba`,'3')";
  3.  
  4. $q = "SELECT * FROM `liczby` WHERE JSON_EXTRACT(`liczba`,'3','$')";
  5.  
  6.  
  7.  
  8. $m = mysqli_query($con,$q);
  9.  
  10. while($row = mysqli_fetch_assoc($m)){
  11. $tab[] = $row;
  12. }
  13.  
  14. http://www.php.net/echo json_encode($tab);
  15.  


moje marne wypociny oba false

to działa

$q = "SELECT * FROM `liczby` WHERE `liczba` RLIKE '3+'";

Napisany przez: viking 6.03.2021, 19:29:33

Wiesz, jest mała różnica czy twój kod to niby json bo wymyśliłeś sobie taką dziwaczną formę przedstawienia problemu, czy faktycznie json.
https://www.db-fiddle.com/f/xtZZs1QsDUUtkp9UneqWAe/0

Napisany przez: matuty 7.03.2021, 13:14:21

nie mam danych w tabeli zapisanych jako json tylko rozkład tabeli przedstawiłem w json
dane w tabeli to normalny string

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)