Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL]Łączenie się z bazą danych za pomocą php.
krzysio_w
post 15.08.2006, 08:37:28
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 2.07.2006

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


Cześć.
Utworzyłem sobie bazę danych na "webd.pl". Niby wszystko jest: tabelki dane w niej. Polecania wpisywane dla MySQLa działają (np.: select). Problem zaczynają się gdy napisałem krótki formularz w HTMLu:
Kod
<html>
<head>
</head>
<body>
<form action="rezultat.php" method="post">
Wybierz metodę wyszukiwania:<br />
<br />
<select name="metoda_wysz">
<option value="autor">Autor
<option value="tytul">Tytuł
<option value="isbn">ISBN
</select>
<br />
<br />
<br />
Wprowadż szukane wyrażenie:<br />
<br />
<input name="wyrazenie" type="text">
<br />
<input type="submit" value="Szukaj">
</form>
<div>
</body>
</html>

Póżniej napisałem stronę wyniku w php:
Kod
<html>
<head>
  <title>"Ksi±żkorama"-Rezultaty wyszukiwania</title>
</head>
<body>
<h1>"Ksi±żkorama"-Rezultaty wyszukiwania </h1>
<?php
  // utworzenie krótkich nazw zmiennych
  $metoda_szukania=$_POST['metoda_wysz'];
  $wyrazenie=$_POST['wyrazenie'];

  $wyrazenie = trim($wyrazenie);

  if (!$metoda_szukania || !$wyrazenie)
  {
     echo 'Brak parametrów wyszukiwania. Wróć do poprzedniej strony i spróbuj ponownie.';
     exit;
  }
  
  if (!get_magic_quotes_gpc())
  {
    $metoda_szukania = addslashes($metoda_szukania);
    $wyrazenie = addslashes($wyrazenie);
  }

  @ $db = new mysqli('localhost', 'krzysio_mybooks', 'krzysio', 'krzysio');

  if (mysqli_connect_errno())
  {
     echo 'Bł±d: Poł±czenie z baz± danych nie powiodło się. Spróbuj jeszcze raz póĽniej.';
     exit;
  }

  $zapytanie = "select * from ksiazki where ".$metoda_szukania." like '%".$wyrazenie."%'";
  $wynik = $db->query($zapytanie);

  $ile_znalezionych = $wynik->num_rows;

  echo '<p>Ilo¶ć znalezionych pozycji: '.$ile_znalezionych.'</p>';

  for ($i=0; $i <$ile_znalezionych; $i++)
  {
     $wiersz = $wynik->fetch_assoc();
     echo '<p><strong>'.($i+1).'. Tytuł: ';
     echo stripslashes($wiersz['tytul']);
     echo '</strong><br />Autor: ';
     echo stripslashes($wiersz['autor']);
     echo '<br />ISBN: ';
     echo stripslashes($wiersz['isbn']);
     echo '<br />Cena: ';
     echo stripslashes($wiersz['cena']);
     echo '</p>';
  }

  $wynik->free();
  $db->close();

?>

</body>
</html>

Tylko, że zamiast podawać mi wyniki wyszukania jest pusta strona. Nawet nie wywala mi żadnego błędu, że nie mógł się połączyć z bazą danych. Czyli wygląda na to (przynajmniej teoretycznie) że połączył się z bazą. Tylko dlaczego nic nie wyszukał . Jeżeli nic nie wyszukał to powinien napisać że znaleziono "0".
Później użyłem ogólnego interfejsu bazodanowego Pear DB oto kod:
Kod
<html>
<head>
  <title>"Ksi±żkorama"-Rezultaty wyszukiwania</title>
</head>
<body>
<h1>"Ksi±żkorama"-Rezultaty wyszukiwania</h1>
<?php
  // utworzenie krótkich nazw zmiennych
  $metoda_szukania=$_POST['metoda_wysz'];
  $wyrazenie=$_POST['wyrazenie'];

  $wyrazenie= trim($wyrazenie);

  if (!$metoda_szukania || !$wyrazenie)
  {
     echo 'Brak parametrów wyszukiwania. Wróć do poprzedniej strony i spróbuj ponownie.';
     exit;
  }

  if (!get_magic_quotes_gpc())
  {
    $metoda_szukania = addslashes($metoda_szukania);
    $wyrazenie = addslashes($wyrazenie);
  }

  // okre¶lenie ustawień dla PEAR DB
  require_once('DB.php');
  $uzytkownik = 'krzysio';
  $haslo = 'krzysio';
  $komputer = 'localhost';
  $nazwa_bazy = 'krzysio_mybooks';

  // ustawienie uniwersalnego łańcucha poł±czenia lub DSN
  $dsn = "mysqli://$uzytkownik:$haslo@$komputer/$nazwa_bazy";

  // poł±czenie z baz± danych
  $db = &DB::connect($dsn);

  // sprawdzenie, czy poł±czenie zostało ustanowione
  if (DB::isError($db))
  {    
    echo $db->getMessage();
    exit;
  }

  // wykonanie zapytania
  $zapytanie = "select * from ksiazki where ".$metoda_szukania." like '%".$wyrazenie."%'";

  $wynik = $db->query($zapytanie);
  // sprawdzenie, czy wynik jest OK
  if (DB::isError($wynik))
  {
    echo $db->getMessage();
    exit;
  }

  // pobranie liczby zwróconych wierszy
  $ile_znalezionych = $wynik->numRows();

  // wy¶wietlenie każdego zwróconego wiersza
  for ($i=0; $i <$ile_znalezionych; $i++)
  {
     $wiersz = $wynik->fetchRow(DB_FETCHMODE_ASSOC);
     echo '<p><strong>'.($i+1).'. Tytul: ';
     echo htmlspecialchars(stripslashes($wiersz['tytul']));
     echo '</strong><br />Autor: ';
     echo stripslashes($wiersz['autor']);
     echo '<br />ISBN: ';
     echo stripslashes($wiersz['isbn']);
     echo '<br />Cena: ';
     echo stripslashes($wiersz['cena']);
     echo '</p>';
  }

  // rozł±czenie się z baz± danych
  $db->disconnect();
  ?>

</body>
</html>

To tu o dziwo wywala mi błąd:
"DB Error: extension not found"
Proszę o pomoc! Gdzie jest błąd? sad.gif
Jest to przykład wzięty żywcem z książki:"php i MySQL Tworzenie stron WWW Vademecum profesionalisty wydanie 3" blink.gif

Ten post edytował krzysio_w 15.08.2006, 08:39:39
Go to the top of the page
+Quote Post
Ja_Szczur
post 15.08.2006, 09:05:17
Post #2





Grupa: Zarejestrowani
Postów: 115
Pomógł: 0
Dołączył: 4.12.2005
Skąd: Strzyżów

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


a może używaj mysql zamiast mysqli ?


--------------------
"No bo z fasolą to człowiek przynajmniej wie, na czym stoi..."
Pomniejsze bóstwa, Terry Pratchett

php :*
Go to the top of the page
+Quote Post
NetJaro
post 15.08.2006, 09:47:57
Post #3





Grupa: Zarejestrowani
Postów: 475
Pomógł: 0
Dołączył: 1.04.2005
Skąd: Warszawa

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


Eh...
Trudno wejść w google i wkleić błąd?

Dodatkowo upewnij się, że masz mysqli na serwerze.
Go to the top of the page
+Quote Post

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: 14.08.2025 - 05:43