Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z zapytaniem pdo
Forum PHP.pl > Forum > PHP
dzesi
Witam mam problem z zapytaniem w pdo
  1. <?php
  2. $zapytanie_sql=$polaczenie_pdo->prepare("SELECT `login` FROM `admin` where login='".$this->login_admin."' AND haslo='".$this->haslo_admin."'");
  3. $sql=$polaczenie_pdo->query($zapytanie_sql);
  4. $num_rows=$polaczenie_pdo->exec();
  5. if( $num_rows==1)
  6. {
  7. echo "zle dane ";
  8. }
  9. else{
  10. echo "ok";
  11. }
  12. dodam ze wyskakuje błąd Call to a member function prepare() on a non-object - ze nie ma obiektu w tej funkcji 
  13. chce sprawdzić czy login istnieje i hasło w bazie .Trzeba porzucić mysqli na rzecz pdo
  14. ?>
Sabistik
Pokaż jak tworzysz obiekt $polaczenie_pdo
dzesi
  1. <?php
  2. public function admin_polaczenie()
  3. {
  4.  // polaczenie 
  5. $baza='mysql:dbname=log_rej;host=localhost';
  6. $user='';
  7. $password='';
  8. try{
  9.  
  10. $polaczenie_pdo = new PDO($baza,$user,$password);
  11. }
  12. catch(PDOException $e)
  13. {
  14. ECHO 'BŁĄD POŁACZENIA' .$e->getMassage();
  15. }
  16.  
  17.  
  18.  
  19. }
  20. ?>
Sabistik
Teraz powiedz gdzie wstawiasz kod przedstawiony w pierwszym poście. Poza metodą admin_polaczenie() ?
dzesi
nie w nowej funkcji
  1. <?php
  2. public function admin_logoanie($login_admin,$haslo_admin)
  3. {
  4. $zapytanie_sql=$polaczenie_pdo->query("SELECT `login` FROM `admin` where login='".$this->login_admin."' AND haslo='".$this->haslo_admin."'");
  5. $sql=$polaczenie_pdo->query($zapytanie_sql);
  6. $num_rows=$polaczenie_pdo->exec();
  7. if( $num_rows==1)
  8. {
  9. echo "zle dane ";
  10. }
  11. else{
  12. echo "ok";
  13. }
  14. }
  15. ?>

Naprawdę nie wiem co jest nie tak smile.gif , a w ogóle zapytanie dobre jest ?
Gdzieś słyszałem ze pdo musi być globalne ?
Sabistik
no to wszystko jasne. Odsyłam do przeczytania manuala o zasięgu zmiennych.
Zmienne zdeklarowane w funkcji/metodzie nie są widoczne poza jej ciałem. W Twoim przypadku przy tworzeniu obiektu PDO musisz go zadeklarować w właściwości klasy poprzez $this->polaczenie_pdo = new PDO(); i dowoływać sie podobnie.
dzesi
Jeszcze mam problem z funkcja podobna do num_rows ale w pdo

  1. <?php
  2. $num_rows=$this->polaczenie_pdo->exec();
  3. if($num_rows==1)
  4. {
  5. echo "ok ";
  6. }
  7. else{
  8. echo "zle";
  9. }
  10. ?>

Nie wiem ale jakoś ta dokumentacja do pdo jest ciężko napisana , wiem też ze mam braki z anglika i nie wszystko rozumiem:) worriedsmiley.gif
Sabistik
W twoim przypadku możesz zrobić np tak:
  1. <?php
  2. $sql = "SELECT count(*) FROM `table` WHERE foo = bar";
  3. $result = $con->prepare($sql);
  4. $result->execute();
  5. $number_of_rows = $result->fetchColumn()
  6. ?>
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.