Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Nazwa kolumny jako zmienna
Forum PHP.pl > Forum > Przedszkole
ChaYim
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.
Pyton_000
To teraz proste ćwiczenie.
Wyświetl sobie to zapytanie gdy przesyłasz więcej kolumn...
Neutral
Jeśli $column jest tablicą to powinna tam być pętla i do tego takie coś:

$column[$i]

ChaYim
$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
Pyton_000
Miałes wyświetlić wygenerowane zapytania a nie podstawiać ręcznie dane....
ChaYim
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ć... blink.gif
Pyton_000
np. tak:

Kod
var_dump("SELECT * FROM wp_list WHERE $column = $search");
ChaYim
Dzięki wielkie 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"
nospor
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'
ChaYim
Dzięki wielkie 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 wink.gif Jeszcze raz dzięki
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.