Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Nazwa kolumny jako zmienna, SELECT wyszukuje tylko w jednej kolumnie
ChaYim
post
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 24.11.2015

Ostrzeżenie: (0%)
-----


Witam.
Edytuję niewielki plugin na WordPressie.
Zasada działania jest prosta: Wyszukaj po: Nazwisku/Emailu/Telefonie/Kuponie następującą frazę...
Mam w formularzu listę wyboru, która definiuje zmienną $column oraz input dla zmiennej $search. Dlaczego zapytanie do MySQL:
  1. $result = $wpdb->get_results($wpdb->prepare("SELECT * FROM wp_list WHERE $column = $search"));

Działa tylko w przypadku jednej kolumny?
W opcjach listy posiadam value: email, name2, phone, oraz coupon - odpowiada to nazwom kolumn w tabeli. Gdy wyszukuję w kolumnie 'phone' wtedy prawidłowo zwraca wyniki. Jednak w pozostałych sytuacjach zwraca zerowe rezultaty. Dodam, że sprawdziłem wszystkie nazwy i czy _POST zwraca zmienną $column oraz $search.

Z góry dzięki za pomoc.

Ten post edytował ChaYim 8.03.2018, 11:05:35
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


To teraz proste ćwiczenie.
Wyświetl sobie to zapytanie gdy przesyłasz więcej kolumn...
Go to the top of the page
+Quote Post
Neutral
post
Post #3





Grupa: Zarejestrowani
Postów: 286
Pomógł: 46
Dołączył: 10.01.2016

Ostrzeżenie: (0%)
-----


Jeśli $column jest tablicą to powinna tam być pętla i do tego takie coś:

$column[$i]

Go to the top of the page
+Quote Post
ChaYim
post
Post #4





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 24.11.2015

Ostrzeżenie: (0%)
-----


$column jest przesyłana z:
  1. <select name="column">
  2. <option value="name2">Nazwisko</option>
  3. <option value="email">Email</option>
  4. <option value="phone">Nr telefonu</option>
  5. <option value="coupon">Kod kuponu</option>


Przetestowałem:
  1. $result = $wpdb->get_results($wpdb->prepare("SELECT * FROM wp_emailinglist WHERE phone = $search"));

i działa. Jednak kiedy używam tych zapytań:
  1. $result = $wpdb->get_results($wpdb->prepare("SELECT * FROM wp_emailinglist WHERE name2 = $search"));
  2. $result = $wpdb->get_results($wpdb->prepare("SELECT * FROM wp_emailinglist WHERE email = $search"));
  3. $result = $wpdb->get_results($wpdb->prepare("SELECT * FROM wp_emailinglist WHERE coupon = $search"));

Jakimś sposobem nie otrzymuję wyników.

Struktura kolumn jest identyczna:
name2 varchar(89) latin2_general_ci
coupon varchar(89) latin2_general_ci
phone varchar(89) latin2_general_ci
email varchar(89) latin2_general_ci

Ten post edytował ChaYim 8.03.2018, 11:26:45
Go to the top of the page
+Quote Post
Pyton_000
post
Post #5





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Miałes wyświetlić wygenerowane zapytania a nie podstawiać ręcznie dane....
Go to the top of the page
+Quote Post
ChaYim
post
Post #6





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 24.11.2015

Ostrzeżenie: (0%)
-----


Cytat(Pyton_000 @ 8.03.2018, 12:27:34 ) *
Miałes wyświetlić wygenerowane zapytania a nie podstawiać ręcznie dane....

Nie bardoz rozumiem gdzie i w jaki sposób to zrobić... (IMG:style_emoticons/default/blink.gif)
Go to the top of the page
+Quote Post
Pyton_000
post
Post #7





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


np. tak:

Kod
var_dump("SELECT * FROM wp_list WHERE $column = $search");


Ten post edytował Pyton_000 8.03.2018, 11:40:32
Go to the top of the page
+Quote Post
ChaYim
post
Post #8





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 24.11.2015

Ostrzeżenie: (0%)
-----


Dzięki wielkie (IMG:style_emoticons/default/wink.gif)
Dla wyboru z listy:
Nazwisko:
  1. string(49) "SELECT * FROM wp_list WHERE name2 = Ipsum"

Email:
  1. string(58) "SELECT * FROM wp_list WHERE email = lorem@ipsum.pl"

Nr telefonu: - Tu dane się wyświetlają
  1. string(53) "SELECT * FROM wp_list WHERE phone = 111222333"

Kod kuponu:
  1. string(51) "SELECT * FROM wp_list WHERE coupon = JPM7PF"


Ten post edytował ChaYim 8.03.2018, 11:47:17
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No i nie sadzisz, ze wartosci tekstowe nalezaloby wkladac w ciapki?

Np to zapytanie
SELECT * FROM wp_list WHERE name2 = Ipsum

powinno wygladac tak
SELECT * FROM wp_list WHERE name2 = 'Ipsum'
Go to the top of the page
+Quote Post
ChaYim
post
Post #10





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 24.11.2015

Ostrzeżenie: (0%)
-----


Dzięki wielkie (IMG:style_emoticons/default/smile.gif)
Kompletnie mi umknęła ta różnica między nr telefonu a resztą (liczba - string)

wystarczyło dodać:
  1. $search = "'$search'";


Wszystko działa jak należy (IMG:style_emoticons/default/wink.gif) Jeszcze raz dzięki
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 19:55