Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Prepared Statements + operator LIKE
offensive__tomat...
post 21.09.2010, 09:03:23
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 21.09.2010

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


Witam.
Mam następujący problem. Mam bazę danych w której jest tabela KSIAZKI. Chcę napisać skrypt wykorzystujący instrukcje przygotowawcze do odczytu zawartości tabeli. Skrypt ma znaleźć odpowiednie wyrażenie ($wyrażenie) w polu wskazanym przez użytkownika ($metoda_szukania). W całej imprezie chciałbym wykorzystać operator LIKE zamiast operatora równości. I tu właśnie pojawia się problem. Skrypt w zaprezentowanej poniżej postawi wykonuje się bez żadnego błędu jednak nie zwraca żadnych wyników. Jedyną informację jaką otrzymuje to: „Znaleziono: 0”. Oczywiście dane wpisuje poprawne.

Nie mam pojęcia gdzie jest błąd. Wczoraj siedziałem nad tym cały dzień i nic. Być może to jakaś pierdoła której po prostu nie widzę. Szukałem rozwiązania w sieci jednak nic nie znalazłem. Będą wdzięczny za pomoc. Dopiero uczę się tego wszystkiego więc proszę o wyrozumiałość winksmiley.jpg.

Raczej to niepotrzebne ale zamieszczam też kod formularza.

--==FORMULARZ==--

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
  5. <link href="style.css" rel="stylesheet" type="text/css" />
  6. <title>Wyszukiwanie książek (instrukcje przygotowawcze)</title>
  7. </head>
  8. <body>
  9. <h1>Wyszukiwanie książek (instrukcje przygotowawcze)</h1>
  10. <form action="rezultat_instr_przyg.php" method="post">
  11. <p>
  12. Wybierz metodę wyszukiwania:<br />
  13. <select name="metoda_szukania">
  14. <option value="autor">Autor</option>
  15. <option value="tytul">Tytuł</option>
  16. <option value="isbn">ISBN</option>
  17. </select>
  18. </p>
  19. <p>
  20. Wprowadź poszukiwane wyrażenie<br />
  21. <input name="wyrazenie" type="text"></input><br />
  22. <input type="submit" name="submit" value="Szukaj"></input>
  23. </p>
  24. </form>
  25. </body>
  26. </html>


--==SKRYPT PHP==--

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
  5. <link href="style.css" rel="stylesheet" type="text/css" />
  6. <title>Wyszukiwanie książek (instrukcje przygotowawcze)</title>
  7. </head>
  8. <body>
  9. <h1>Wyszukiwanie książek (instrukcje przygotowawcze)</h1>
  10.  
  11. <?php
  12. $metoda_szukania = trim($_POST['metoda_szukania']);
  13. $wyrazenie = trim($_POST['wyrazenie']);
  14.  
  15.  
  16. if (!$metoda_szukania || !$wyrazenie) {
  17. echo '<p>Brak parametrów wyszukania. Wróć do poprzedniej strony i spróbuj ponownie.</p>';
  18. }
  19.  
  20. $metoda_szukania = addslashes($metoda_szukania);
  21. $wyrazenie = addslashes($wyrazenie);
  22. }
  23.  
  24. @ $db = new mysqli('localhost', 'offensivetomato', 'ksiazki', 'asd123');
  25.  
  26. if (mysqli_connect_errno ()) {
  27. echo '<p>Błąd: Połączenie z bazą danych nie powiodło się.
  28. Spróbuj jeszcze raz później</p>';
  29. }
  30.  
  31. $wyrazenie = "'%".$wyrazenie."%'";
  32.  
  33. $zapytanie = $db->prepare("select isbn, autor, tytul, cena from ksiazki where ? like ?");
  34. $zapytanie->bind_param("ss", $metoda_szukania, $wyrazenie);
  35. $zapytanie->execute();
  36. $zapytanie->bind_result($isbn, $autor, $tytul, $cena);
  37. $zapytanie->store_result();
  38. $ile_znalezionych = $zapytanie->num_rows;
  39. echo 'Znaleziono: ' .$ile_znalezionych;
  40.  
  41. for ($i=0; $i<$ile_znalezionych; $i++){
  42. $zapytanie->fetch();
  43. echo '<p><strong>' .($i+1). ' Tytuł: </strong>' .stripslashes($tytul). '<br />';
  44. echo 'Autor: ' . stripslashes($autor). '<br />';
  45. echo 'ISBN: ' . stripslashes($isbn). '<br />';
  46. echo 'Cena: ' . number_format($cena, 2). '</p>';
  47. }
  48.  
  49. $db->close();
  50. ?>
  51. <p>
  52. <a href="szukaj_instr_przyg.php">Powrót</a>
  53. </p>
  54. </body>
  55. </html>
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Wersja Lo-Fi Aktualny czas: 29.06.2025 - 20:17