Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Łączenie się z bazą.
Forum PHP.pl > Forum > Przedszkole
Vill
Mam jakiś błąd, tylko nie wiem czy to wina kodu czy konfiguracji, czy może trzeba jeszcze pomajstrować w php.ini.

Łącze się z MySQL obiektowo, czyli:

  1. <?php
  2. @ $db = new mysqli('localhost', 'uzytkownik', 'haslo', 'baza');
  3.  
  4. if (mysqli_connect_errno())
  5.  {
  6.     echo 'Błąd: Połączenie z bazą danych nie powiodło się. Spróbuj jeszcze raz później.';
  7.     exit;
  8.  }
  9.  
  10. $zapytanie = "select * from baza where ".$costam." like '%".$cos."%'";
  11. $wynik = $db->query($zapytanie);
  12.  
  13. $ileznalezionych = $wynik->num_rows;
  14.  
  15.  for ($i=0; $i <$ileznalezionych; $i++)
  16.  {
  17.     $wiersz = $wynik->fetch_assoc();
  18.     echo '<p><strong>'.($i+1).'. Tytuł: ';
  19.     echo stripslashes($wiersz['tytul']);
  20.     echo '</strong><br />Autor: ';
  21.     echo stripslashes($wiersz['autor']);
  22.     echo '<br />ISBN: ';
  23.     echo stripslashes($wiersz['isbn']);
  24.     echo '<br />Cena: ';
  25.     echo stripslashes($wiersz['cena']);
  26.     echo '</p>';
  27.  }
  28. ?>


Taka wyszukiwarka książek miała być, formularz wyszukiwania napisany jest dobrze.
Wcześniej zostało dodane addslashes.

I teraz nic się nie pokazuje, ani ten błąd (czyli chyba z MySQL się połączyło), ani wyszukane wartości (czyli chyba ich nie odczytało, albo błąd w pętli for).

W bazie dane są wpisane.
Jeśli usunę @ to wyświetla się błąd, że nie ma takiej klasy.

Co zrobić, żeby działało?
peter13135
ten skrypt co dałes nie ma prawa działać, ponieważ wcześniej nie podałeś $cos, ani $costam, (przynajmniej w tym skrypcie ja tego nie widzę)
Vill
To nie jest cały skrypt tylko wycinek w którym prawdopodobnie jest błąd.
A coś i cośtam ładuje się z formularza wcześniej.

Całość skryptu wygląda tak:
  1. <?php
  2. $metodaszukania=$_POST['metodaszukania'];
  3.  $wyrazenie=$_POST['wyrazenie'];
  4.  
  5.  $wyrazenie = trim($wyrazenie);
  6.  
  7.  if (!$metodaszukania || !$wyrazenie)
  8.  {
  9.     echo 'Brak parametrów wyszukiwania. Wróć do poprzedniej strony i spróbuj ponownie.';
  10.     exit;
  11.  }
  12.  
  13.  {
  14.    $metodaszukania = addslashes($metodaszukania);
  15.    $wyrazenie = addslashes($wyrazenie);
  16.  }
  17.  
  18.  @ $db = new mysqli('localhost', 'uzytkownik', 'haslo', 'ksiazki');
  19.  
  20.  if (mysqli_connect_errno())
  21.  {
  22.     echo 'Błąd: Połączenie z bazą danych nie powiodło się. Spróbuj jeszcze raz później.';
  23.     exit;
  24.  }
  25.  
  26.  $zapytanie = "select * from ksiazki where ".$metodaszukania." like '%".$wyrazenie."%'";
  27.  $wynik = $db->query($zapytanie);
  28.  
  29.  $ileznalezionych = $wynik->num_rows;
  30.  
  31.  echo '<p>Ilość znalezionych pozycji: '.$ileznalezionych.'</p>';
  32.  
  33.  for ($i=0; $i <$ileznalezionych; $i++)
  34.  {
  35.     $wiersz = $wynik->fetch_assoc();
  36.     echo '<p><strong>'.($i+1).'. Tytuł: ';
  37.     echo stripslashes($wiersz['tytul']);
  38.     echo '</strong><br />Autor: ';
  39.     echo stripslashes($wiersz['autor']);
  40.     echo '<br />ISBN: ';
  41.     echo stripslashes($wiersz['isbn']);
  42.     echo '<br />Cena: ';
  43.     echo stripslashes($wiersz['cena']);
  44.     echo '</p>';
  45.  }
  46.  
  47.  $wynik->free();
  48.  $db->close();
  49. ?>


A dane z formularza są, bo gdy wpisuje:

echo'<pre>';
print_r($_POST);
echo'</pre>';

to wszystko jest ładnie wypełnione.
Pododawanie else do ifów też nie działa, choć nie wiem czy zostawienie bez else to jakiś straszny błąd.

Dane w bazie są, wpisując zapytanie bezpośrednio do bazy wyświetlają się wiersze.

Jak po wierszu $wiersz = $wynik->fetch_assoc(); wpiszę

echo'<pre>';
print_r($wiersz);
echo'</pre>';

to nic się nie wyświetla.
guilty82
a nie powinno być $ileznalezionych = $wynik->num_rows(); ?
Vill
To też nie to.
athei
Cytat(Vill @ 2.06.2009, 15:27:53 ) *
Jeśli usunę @ to wyświetla się błąd, że nie ma takiej klasy.

No i o to chodzi, mysqli w php.ini włączyłeś?
extension=php_mysqli.dll
worulo
Skrypt jest dobrze napisany i pochodzi on z książki "PHP i MySQL Tworzenie stron WWW Vademecum profesjonalisty" Helion czarodziej.gif

masz problem z serwerem. Jeśli korzystasz z Webserva to spróbuj wrzucić ten skrycik na serwer wirtualny jakiegoś hostingu i Ci zadziała. Miałem ten sam problem kiedyś jak się uczyłem z tej książki.
Vill
Rozwiązałam problem smile.gif
Ale dzięki za chęci smile.gif
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.