Beata Jusiak

Beata Jusiak Właściciel, Sunrise
Web

Temat: PHP & SQL - porównanie stringów

Witam,
mam następujący problem:
mam zapytanie do bazy danych:
$resultsT = $wpdb->get_results( 'SELECT post_id FROM wp_postmeta WHERE meta_key = "temat" AND meta_value = "'.$temat.'"', OBJECT );
I jeśli pod zmienną $temat podstawię dane z $_POST, czyli $temat = $_POST['temat'], zapytanie zwraca zawsze pusty wynik, nawet jeśli w phpmyadmin widzę, że istnieją rekordy, gdzie eta_key jest równa wartości $_POST['temat']
Jeśli zaś zamiast zmiennej $temat w zapytaniu wpiszę po prostu np. 'Temat 1', zapytanie zwraca odpowiednie wyniki.
Wydaje mi się, że chodzi tu o kodowanie stringów, dlatego zapytanie sql uważa, że są one różne. Jak mogę coś na to poradzić?

Pozdrawiam i z góry dziękuję za odpowiedź
Robert K.

Robert K. Programista szuka
zleceń

Temat: PHP & SQL - porównanie stringów

"'.$temat.'"', - to wygląda na jeden apostrof za dużo, sprawdź czy to pomoże.

Pozdrawiam
Janusz Skudrzyk

Janusz Skudrzyk Członek zarządu,
weblabs.pl

Temat: PHP & SQL - porównanie stringów

Dla upewnienia się dobrze jest zrobić echo 'SELECT post_id FROM wp_postmeta WHERE meta_key = "temat" AND meta_value = "'.$temat.'"' ; Jak pokazuje co trzeba, to problem leży gdzie indziej. I jeszcze jedno, co znaczy: "nawet jeśli w phpmyadmin widzę, że istnieją rekordy, gdzie meta_key jest równa wartości $_POST['temat']" To meta_key czy meta_value? Jeśli meta_value, to skąd pewność, że jest ona równa dokładnie "Temat 1", a nie " Temat 1 "?
Marcin Mackiewicz

Marcin Mackiewicz Programista JAVA, RS
Adware Polska

Temat: PHP & SQL - porównanie stringów

A dlaczego ogóle wyszukiwanie po nazwach tematów? Znaczy się, że przy każdym poście dla danego tematu przechowujesz jego tytuł i po tym zwracasz listę postów? A co zrobisz jeżeli na przestrzeni czasu pojawią się dwa tematy o podanej takiej samej nazwie? A co zrobisz jeżeli temat wątku zostanie zmieniony bo np poprawiono literówkę? Poprawiasz wszystkie posty?

Może lepiej zrobić tabelę z listą tematów (wątków) gdzie każdy temat ma swoje id a następnie w tabeli z postami zrobić klucz obcy id_watku do tabeli z tematami? Wtedy w request przekazujesz id wątku i wyciągasz wszystko po kolumnach typu int. Zawsze ci zwróci poprawnie a z porównywaniem stringów to nie jest dobre rozwiązanie. Jak pisał przedmówca string stringowi nie równy chociażby o białe znaki na które użytkownicy kompletnie nie zwracają uwagi.

User: "Przecież to jest ten sam tekst ... ja widzę na ekranie dobrze" :)



Wyślij zaproszenie do