Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP5][MySQL4.1] Problem połączenia z Bazą MySQL
Forum PHP.pl > Forum > Przedszkole
dusty
Witam, bardzo będę wdzięczny za pomoc, bo juz sam nie wiem w czym jest problem. Mam stronę search.html i stronę results.php, w ramach results pragnę sie połączyc do określonej bazy i nic, wszytsko pada przy połączeniu.

search.html

<html><head>
<title>Book-O-Rama Catalog Search</title>
</head>

<body>
<h1>Book-O-Rama Catalog Search</h1>

<form action="results.php" method="post">
Choose Search Type:<br />
<select name="searchtype">
<option value="author">Author</option>
<option value="title">Title</option>
<option value="isbn">ISBN</option>
</select>
<br />
Enter Search Term:<br />
<input name="searchterm" type="text">
<br />
<input type="submit" value="Search">
</form>

</body>
</html>

Strona results.php

<html>
<head>
<title>Book-O-Rama Search Results</title>
</head>
<body>
<h1>Book-O-Rama Search Results</h1>
<?php
// create short variable names
$searchtype=$_POST['searchtype'];
$searchterm=$_POST['searchterm'];

$searchterm= trim($searchterm);

if (!$searchtype || !$searchterm)
{
echo 'You have not entered search details. Please go back and try again.';
exit;
}

if (!get_magic_quotes_gpc())
{
$searchtype = addslashes($searchtype);
$searchterm = addslashes($searchterm);
}

@ $db = new mysqli('localhost', 'bookorama', 'bookorama123', 'books'); //strona pada w tym miejscu

if (mysqli_connect_errno())
{
echo 'Error: Could not connect to database. Please try again later.';
exit;
}

$query = "select * from books where ".$searchtype." like '%".$searchterm."%'";
$result = $db->query($query);

$num_results = $result->num_rows;

echo '<p>Number of books found: '.$num_results.'</p>';

for ($i=0; $i <$num_results; $i++)
{
$row = $result->fetch_assoc();
echo '<p><strong>'.($i+1).'. Title: ';
echo htmlspecialchars(stripslashes($row['title']));
echo '</strong><br />Author: ';
echo stripslashes($row['author']);
echo '<br />ISBN: ';
echo stripslashes($row['isbn']);
echo '<br />Price: ';
echo stripslashes($row['price']);
echo '</p>';
}

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

?>
</body>
</html>


Próbowałem zmiennic na mysql_connect, usuwać @ i nic, jak baza przejdzie do się zacina na komendzie if, jak ją usunę to się zacina na dalszej części kodu. Dal wyjaśnienia uzywam krasnala - Apache, PHP5 = dodatek Mysql 4.1.11 - dla wersji MySQL 3+ też nic nie chodziło.
Nattfarinn
A mógłbyś podać z jakim komunikatem o błędzie Ci się wysypuje na połączeniu do bazy?

A najlepiej na końcu lini dopisać or die(mysqli_error()); żeby linia wyglądała:
  1. <?php
  2. $db = new mysqli('localhost', 'bookorama', 'bookorama123', 'books') or die(mysqli_error());
  3. ?>


No i Krasnal z tego co wiem nie dodaje bibliotek z PHP5 automatycznie do %WINDOWS%\System32 i trzeba to zrobić ręcznie. To nie jedyna wada krasnala, więc polecam zmienić pakiet na coś innego. Ja ze swojej strony gorąco polecam XAMPP .
dusty
Problem w tym że żaden błąd się nie wyswietla, poza </title> nic nie jest widoczne na stronie, ale zrobiłem mały test:

echo "hallo1";

@ $db = new mysqli('localhost', 'bookorama', 'bookorama123','books')or die(mysqli_error());;

echo "hallo2";

i wynik jest taki że pojawia się tylko:

Book-O-Rama Search Results

hallo1
Nattfarinn
Wywal małpę (@) i jeden średnik z końca lini i odpal jeszcze raz. Wklej co się pojawia.
dusty
Fatal error: Class 'mysqli' not found in c:\usr\krasnal\www\Learn\results.php on line 28

a jak usunę new to otrzymam

Fatal error: Call to undefined function mysqli() in c:\usr\krasnal\www\Learn\results.php on line 28
Nattfarinn
Eeee. A próbowałeś: mysqli_connect()? tongue.gif
dusty
Tak, niestety ten sam błąd - a jest inna mozliwośc zeby połączyc się z bazą/ Są jakies dobre kursy na necie? Bo chyba w tym przypadku nic nie wykombinuje.
nospor
Po prostu uzywasz modulu mysqli ktorego nie masz zainstalowanego.

Korzystaj z modulu mysql (bez "i"), ktory zapewne masz.
http://pl2.php.net/manual/pl/ref.mysql.php

I uzywaj BBCODE!!!
dusty
A jak mozna zainstalowac mysqli?
nospor
Dostales linka do manuala to korzystaj z niego
http://pl2.php.net/manual/pl/ref.mysqli.php

pozatym na forum byla nie raz o tym mowa: uzyj szukajki
dusty
echo "hallo1";
@ $db = mysql_connect('localhost', 'bookorama', 'bookorama123','books')or die(mysql_error());
echo "hallo2";

if (mysql_connect_errno())
{
echo 'Error: Could not connect to database. Please try again later.';
exit;
}

$query = "select * from books where ".$searchtype." like '%".$searchterm."%'";
$result = $db->query($query);

Nic nie dało więc usunąłem if i wyskoczył błąd:

Fatal error: Call to a member function query() on a non-object in c:\usr\krasnal\www\Learn\results.php on line 35 - dla $result = $db->query($query);

Ale przynajmniej hallo2 się pojawił ;-)
nospor
Grzecznie prosilem: uzywaj bbcode. Nie to nie. Zamykam

Podalem ci rowniez linka do manuala. Tam bylo wszystko napisane na temat mysql i funkcji jakich nalezy uzywac. Zajrzyj tam jeszcze raz a dowiesz się czemu masz blad.

ps: jesli chcesz kontynuowac temat, napisz do mnie PW z poprawną trescia posta oraz z oznakami tego, ze zajrzales do manuala 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.