Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: If php i pobieranie danych z bazy
Forum PHP.pl > Forum > Przedszkole
Kacpervixu
Witam mam problem w tym aby przy użyciu if pobierało mi dane o login i jeżeli jest równe 0 to poszła rejestracja a cały czas wywala mi że nie pomyslna kod:
  1. if ($sth = $db->prepare('SELECT login FROM user WHERE login = ".$login"' ) == 0)
  2. {
  3.  
  4. $sth = $db->prepare('INSERT INTO user (email,password,login,rejestracja,logowanie,ip) VALUE (:email,:password,:login,:rejestracja,:logowanie,:ip)');
  5. $sth->bindValue(':ip', $ip, PDO::PARAM_STR);
  6. $sth->bindValue(':logowanie', $logowanie, PDO::PARAM_STR);
  7. $sth->bindValue(':rejestracja', $rejestracja, PDO::PARAM_STR);
  8. $sth->bindValue(':login', $login, PDO::PARAM_STR);
  9. $sth->bindValue(':email', $email, PDO::PARAM_STR);
  10. $sth->bindValue(':password', $hashPassword, PDO::PARAM_STR);
  11. $sth->execute();
  12.  
  13. die('Rejestracja pomyslna!');
  14. }else die('Rejestracja nie pomyslna!');
viking
Jak doszedłeś do tego że prepare ma zwrócić 0? Owszem zwróci przez przypadek dla false.
public PDO::prepare ( string $statement [, array $driver_options = array() ] ) : PDOStatement zwraca pdostatement na którym masz wykonać execute.
Kacpervixu
jak gdyby chiałbym dodać że jestem mega początkujący w php a doszedłem do tego w taki sposób że z dołu skopiowalem do góry i zmieniłem na select i miałem szczerą nadzieję że zadziała
viking
To w dokumentacji masz pełne przykłady jak tego używać.
Kacpervixu
ale ogólnie da sie tak zrobić tak? czy jest inny sposób aby to zrobic?
viking
Tak, czy masz założony indeks unikalny na login? I po co wybierać login z bazy skoro go znasz? Możesz użyć count.
nospor
Cytat
jak gdyby chiałbym dodać że jestem mega początkujący w php

I dla takich osob mamy dzial Przedszkole. Tam tez przenosze a ciebie prosze bys samodzielnie nastepnym razem tam zakladal tematy
Kacpervixu
nie, nie mam unikalnego indeksu na loginie. chce wybrać login z bazy po to żeby zobaczyć czy taki istnieje jeżeli istnieje to ma wywalić błąd ze taki juz jest a jak nie ma takiego w bazie to go dodać
gino
Kod
$sth = $db->prepare('SELECT login FROM user WHERE login = ".$login"' );

if($sth->rowCount() === 0) {

    dodanie rekordu do bazy...
   die('Rejestracja pomyslna!');
}

die('Rejestracja nie pomyslna!');


gino
Kacpervixu
niestety to nie działa cały czas wyświetla że pomyślna
viking
Bo powtórzę się jeszcze raz. Jak ma działać skoro nigdzie nie jest wykonane tylko przygotowane.
Kacpervixu
jak nie jest wkonane? normalnie rekordy się dodają do bazy jeżeli o to chodzi

cały kod wygląda następująco
  1. function filtruj($zmienna)
  2. {
  3. $zmienna = stripslashes($zmienna); // usuwamy slashe
  4.  
  5. // usuwamy spacje, tagi html oraz niebezpieczne znaki
  6. }
  7. require_once("config.php");
  8. if(isset($_POST['register'])){
  9. $ip = $_SERVER['REMOTE_ADDR'];
  10. $login = $_POST['login'];
  11. $email = $_POST['email'];
  12. $rejestracja = date("Y-m-d H:i:s");
  13. $logowanie = date("Y-m-d H:i:s");
  14. $password = $_POST['password'];
  15. $hashPassword = password_hash($password,PASSWORD_BCRYPT);
  16.  
  17. $sth = $db->prepare('SELECT COUNT(*) FROM user WHERE login = ".$login"' );
  18. if($sth->rowCount() === 0)
  19. {
  20.  
  21. $sth = $db->prepare('INSERT INTO user (email,password,login,rejestracja,logowanie,ip) VALUE (:email,:password,:login,:rejestracja,:logowanie,:ip)');
  22. $sth->bindValue(':ip', $ip, PDO::PARAM_STR);
  23. $sth->bindValue(':logowanie', $logowanie, PDO::PARAM_STR);
  24. $sth->bindValue(':rejestracja', $rejestracja, PDO::PARAM_STR);
  25. $sth->bindValue(':login', $login, PDO::PARAM_STR);
  26. $sth->bindValue(':email', $email, PDO::PARAM_STR);
  27. $sth->bindValue(':password', $hashPassword, PDO::PARAM_STR);
  28. $sth->execute();
  29.  
  30. die('Rejestracja pomyslna!');
  31. }else die('Rejestracja nie pomyslna!');
  32. }
viking
No fajnie. A widzisz to execute dla insert? Reszta kodu te mysql real escape string i inne śmieci są do kosza.
gino
miałeś wykonać to zapytanie:

Kod
$sth = $db->prepare('SELECT login FROM user WHERE login = :login');
$sth->bindValue(':login', $login, PDO::PARAM_STR);
$sth->execute();


i dalej to co napisałem


gino
Kacpervixu
jpdl jaki ja tępy jestem sorka ludziska działa już facepalmxd.gif
viking
Dodatkowo jaka to baza jest? Pewnie mysql ale i tak poczytaj sobie uwagi o rowCount dla selecta.
Kacpervixu
mysql od ibc
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.