Wyswietlenie całej zawartosci tabeli

0

Mam dziwny problem.
Mam formularz z polem select i tam kilka wartosci. Dodatkowo jest pole tekst. Kiedy posle puste pole tekst i selecta w takim zapytaniu wyswietla mi sie cala tabela

$sql = "SELECT * FROM $tabela WHERE $gdzie LIKE '%$co%'";

$co to z pola tekst
$gdzie to nazwy pol tabeli osadzone jako wartosc w select

1

Pokaż wartość zapytania po podstawienie wartości że zmiennych.

Poczytaj też o SQL injection

1

Jeśli wyślesz pustą wartość, to zapytanie znajdzie WSZYSTKIE rekordy. Poczytaj sobie jak działa LIKE.

1
marchewa napisał(a):

Tabela ma 10 wierszy. Nazwy tych wierszy to wartosci z pola select. Przykladowo mam pole imie i nazwisko i teraz majac przykladowo rekordy 'Tomasz Kozub, Michal Zuzur i teraz wpisujac w pole tekst 'zu' chce aby sie wuyswietlily tylko te ktorezawieraja 'zu' i tak sie dzieje tylko jesli polse puste wyswietla sie cala zawartosc tabeli.

I działa to ok. Jeśli nie chcesz pustych wartości, to musisz się zabezpieczyć dodając odpowiedni warunek w zapytaniu.

0

Ok. Wracajac do tematu incjection. Jak ma wygladac poprawne zxapytanie do tabeli jesli przekazuje zmienne w takiej postaci jak wyzej. Wiem jak to zrobic jesli mam przypisane dane jak ponizej:

$stmt = $mysqli->prepare("SELECT id, name, age FROM myTable WHERE name = ?");
$stmt->bind_param("s", $_POST['name']);
$stmt->execute();
$stmt->store_result();
if($stmt->num_rows === 0) exit('No rows');
$stmt->bind_result($idRow, $nameRow, $ageRow); 
while($stmt->fetch()) {
  $ids[] = $idRow;
  $names[] = $nameRow;
  $ages[] = $ageRow;
}
var_export($ids);
$stmt->close();

Ale jak zrobic z WHERE gdzie nie odwoluje sie do pola i nie przypisuje mu zmiennej i tak samo z LIKE

1 użytkowników online, w tym zalogowanych: 0, gości: 1