Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql][php] Mysqli
Forum PHP.pl > Forum > Przedszkole
nero
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
MiFlo
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 smile.gif daj or die(mysql_error()) przy zapytaniu
nero
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
Leech
Połączyłeś sie z sewerem ale nie wybrałeś bazy.
nero
  1. <?php
  2. $db = new mysqli('localhost','root','12','helion') or die(mysql_error());
  3. ?>

baza na której pracuje nazywa sie "helion"
Leech
brakuje tego:

mysqli->select_db($dbname)
maziak
  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 smile.gif

W mysqli wybor bazy danych to ten czwarty parametr przy tworzeniu obiektu. Więc to jest dobrze.
nero
Witam
Niestety dalej nic nie działa 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.
Kicok
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
nero
Nareszcie jakieś błędy 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,
Kicok
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. ?>
nero
Nareszcie wszystko działa exclamation.gif
Dzięki wielkie
Pozdrawiam Nero
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.