Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Łączenie się z bazą danych za pomocą php.
Forum PHP.pl > Forum > Przedszkole
krzysio_w
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
Ja_Szczur
a może używaj mysql zamiast mysqli ?
NetJaro
Eh...
Trudno wejść w google i wkleić błąd?

Dodatkowo upewnij się, że masz mysqli na serwerze.
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.