Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql][php] Mysqli
nero
post
Post #1





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 20.02.2007

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


Witam
Zaczynam uczyć się php i nie radzę sobie z następującym problemem.
Działam na :
Xammp 1.6.3a który zawiera
Apache 2.2.4
MySQL 5.0.45
PHP 5.2.3 + PHP 4.4.7 + PEAR
Mój problem polega na tym że wykonując skrypt (zamieszczony poniżej) nie mam teoretycznie żadnych errorów. komunikatów, po prostu skrypt tak jakby sie zatrzymywał z niewiadomych przyczyn gdzieś około linijki 25. Wiem że ten problem raczej jest związany z mysqli tylko nie wiem jak go rozwiązać :/
Z phpinfo() wynika że mysqli jest enabled. Pliki php_mysqli.ddl i libmysqli.ddl są w c:\windows\system32

Gdy uruchomię skrypt to wyświetla mi sie "Ilość znalezionych pozycji w bazie:" i koniec. Wyniku z bazy już nie ma!.

  1. <?php
  2. //utworzenie krótkich nazw zmiennych..
  3. $metoda_szukania = $_POST['metoda_szukania'];
  4. $wyrazenie = $_POST['wyrazenie'];
  5. // trim () - wyżuca zbędne spacje z początku i końca wyrażenia
  6. $wyrazenie = trim($wyrazenie);
  7. if(!isset($metoda_szukania) || !isset($wyrazenie))
  8. {
  9. echo 'Brak parametrów wyszukiwania...';
  10. }
  11. //get_magic_quotes_gps() - informuje czy znaki cudzysłowiów zostaną wprowadzone automatycznie
  12. //Jeśli tak nie będzie nalerzy użyć funkcji addslashes() w celu umieszeczenia w danch znaków ucieczki
  13. {
  14. $metoda_szukania = addslashes($metoda_szukania);
  15. $wyrazenie = addslashes($wyrazenie);
  16. }
  17.  
  18. $db = new mysqli('localhost','root','12','helion');
  19.  
  20. if (mysqli_connect_errno())
  21. {
  22. echo 'Połączenie z baza nie powiodło sie. Prosimy spróbować póĽniej';
  23. exit();
  24. }
  25. $pytanie = "SELECT * FORM ksiazki WHERE ".$metoda_szukania."like '%".$wyrazenie."%'";
  26. $wynik = $db ->query($pytanie);
  27. $ile_znalezionych = $wynik ->num_rows;
  28. echo '<br>Ilość znalezionych pozycji w bazie: '.$ile_znalezionych .'<br />';
  29. for ($i =;$i<$ile_znalezionych ;$i++)
  30. {
  31. $wiersz = $wynik ->fetch_assoc();
  32. echo '<p><strong>'.$i+1 .'<t>Tytul: ';
  33. echo stripslashes($wiersz['tytul']);
  34. echo '</strong ><br />Autor: ';
  35. echo stripslashes($wiersz['autor']);
  36. echo '<br />ISBN: ';
  37. echo stripslashes($wiersz['isbn']);
  38. echo '<br />Cena: ';
  39. echo stripslashes($wiersz['cena']);
  40. echo '</p>';
  41. $wynik ->free();
  42.  
  43. }
  44. ?>


Bardzo proszę o pomoc.
Pozdrawiam Nero
Go to the top of the page
+Quote Post
MiFlo
post
Post #2





Grupa: Zarejestrowani
Postów: 92
Pomógł: 4
Dołączył: 12.09.2006
Skąd: 127.0.0.1

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


Włącz w php.ini raportowanie błędów na On i raportowanie blędów na E_ALL
Istnieją tez funkcje or die() i mysql_error() łącząc je mozna ladnie zrobic cos takiego
mysql_query('zapytanie') or die(mysql_error());
Pozdr MIFlo
Zapewne masz błąd w zapytaniu mysql i niezwraca ci rekordów (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) daj or die(mysql_error()) przy zapytaniu

Ten post edytował MiFlo 15.08.2007, 22:47:19
Go to the top of the page
+Quote Post
nero
post
Post #3





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 20.02.2007

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


Witam
Dzięki za zainteresowanie tematem.

w php.ini mam ustawione:
error_reporting = E_ALL
display_errors = On

Ustawienie już takie było, nie musiałem nic zmieniać.

zmieniłem te linijki :
  1. <?php
  2. $db = new mysqli('localhost','root','12','helion') or die(mysql_error());
  3.  
  4.  $wynik = $db ->query($pytanie) or die(mysql_error()) ;
  5. ?>

Po tej zmianie problem jest jeszcze większy bo już mi nie wyświetla tekstu " Ilość znalezionych pozycji w bazie:" czyli już nie dochodzi do linijki 29.Co mogę jeszcze poprawić?
Pozdrawiam Nero
Go to the top of the page
+Quote Post
Leech
post
Post #4





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 26.07.2007

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


Połączyłeś sie z sewerem ale nie wybrałeś bazy.
Go to the top of the page
+Quote Post
nero
post
Post #5





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 20.02.2007

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


  1. <?php
  2. $db = new mysqli('localhost','root','12','helion') or die(mysql_error());
  3. ?>

baza na której pracuje nazywa sie "helion"
Go to the top of the page
+Quote Post
Leech
post
Post #6





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 26.07.2007

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


brakuje tego:

mysqli->select_db($dbname)
Go to the top of the page
+Quote Post
maziak
post
Post #7





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 9.07.2007

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


  1. $pytanie = "SELECT * FORM ksiazki WHERE ".$metoda_szukania."like '%".$wyrazenie."%'";

Nie ma spacji przed "like". Zapytanie poprostu nie zwraca rekordow, dla tego nie ma błedów (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

W mysqli wybor bazy danych to ten czwarty parametr przy tworzeniu obiektu. Więc to jest dobrze.

Ten post edytował maziak 16.08.2007, 10:08:06
Go to the top of the page
+Quote Post
nero
post
Post #8





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 20.02.2007

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


Witam
Niestety dalej nic nie działa (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
możecie uruchomić to u siebie?? t, wówczas zobaczycie co jest nie tak.

jeśli wstawię takie zapytanie:
  1. <?php
  2. $pytanie = "SELECT * FORM ksiazki ";
  3. ?>

to też nic nie wypisze.
dzięki za zainteresowanie tematem pozdrawiam.

Ten post edytował nero 16.08.2007, 13:34:31
Go to the top of the page
+Quote Post
Kicok
post
Post #9





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


Jeśli używasz mysqli, to zamiast mysql_error" title="Zobacz w manualu PHP" target="_manual powinieneś stosować mysqli_error" title="Zobacz w manualu PHP" target="_manual
Go to the top of the page
+Quote Post
nero
post
Post #10





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 20.02.2007

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


Nareszcie jakieś błędy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) mi sie pojawiły.
Ale mysqli_error żąda jakiegoś parametru, co nim jest?
Co to jest ten "mysqli link"?
jeśli wstawię coś takiego:
  1. <?php
  2. $db = new mysqli('localhost','root','12','helion') or die(mysqli_error("błąd"));
  3. ?>

to wyrzuca mi coś takiego:
Warning: mysqli_error() expects parameter 1 to be mysqli,
Go to the top of the page
+Quote Post
Kicok
post
Post #11





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


Przecież pisze w manualu:
  1. <?php
  2.  
  3. $mysqli = new mysqli( 'localhost', 'my_user', 'my_password', 'world' );
  4.  
  5. $mysqli->query( 'SELECT * FROM tabela' ) or die( $mysqli->error );
  6.  
  7. ?>


albo:
  1. <?php
  2.  
  3. $link = mysqli_connect( 'localhost', 'my_user', 'my_password', 'world' );
  4.  
  5. mysqli_query( $link, 'SELECT * FROM tabela' ) or die( mysqli_error( $link ) );
  6.  
  7. ?>


Ten post edytował Kicok 16.08.2007, 18:39:36
Go to the top of the page
+Quote Post
nero
post
Post #12





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 20.02.2007

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


Nareszcie wszystko działa (IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif)
Dzięki wielkie
Pozdrawiam Nero
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 05:19