• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem ze zliczaniem rekordów MySQL i PHP

0 głosów
83 wizyt
pytanie zadane 21 listopada 2016 w PHP, Symfony, Zend przez użytkownika GhostZoombie Użytkownik (620 punkty)

Witam, mam taki mały problem z kodem. Chce sprawdzić czy podany login lub email istnieje w bazie. W tym celu zliczam sobie ilość zwróconych rekordów. Gdy większe od 0 to istnieje taki login/email. I w sumie działa, gdy email lub hasło się powtarza wiadomość jest wyświetlana. Problem polega jednak na tym że gdy tylko jedno z nich się powtarza to nadal wyświetla obie opcje (Login się powtarza i Email się powtarza). Same duplikacje w bazie rozwiązałem ifem z "mysqli_errno($conn) == 1062", też działa ale fajnie było by rozbić to na email i login. Chyba że da się wyciągnąć takie info z mysqli_errno. Gdy wszystko się zgadza rekord normalnie dodaje się do bazy. Z góry dziękuję za odpowiedź :) 

$sqlLogin = "SELECT COUNT(*) FROM users WHERE login = '$login'";
$sqlEmail = "SELECT COUNT(*) FROM users WHERE email = '$email'";

$resultLogin = $conn->query($sqlLogin);
$resultEmail = $conn->query($sqlEmail);

if($resultLogin->num_rows > 0){
   echo "Podany Login już istnieje!";
} else {}
if($resultEmail->num_rows > 0){
   echo "Podany Email już istnieje!";
} else {}

 

2 odpowiedzi

+1 głos
odpowiedź 21 listopada 2016 przez użytkownika hoktaur Stary wyjadacz (12,340 punkty)
wybrane 22 listopada 2016 przez użytkownika GhostZoombie
 
Najlepsza
a może tak:

SELECT SUM(login = '$login'), SUM(email = '$email') FROM users WHERE login = '$login' OR email = '$email'
komentarz 21 listopada 2016 przez użytkownika GhostZoombie Użytkownik (620 punkty)
Nie za bardzo rozumiem, jak mam z tego wyciągnąć dane do php'a. Bo mogę sobie zliczyć ale nadal dostaje pojedynczą wartość. Bo jeśli mi zliczy 1 to teraz który z nich jest prawdziwy. Jeśli 2 to nadal jestem w tym samym punkcie.
komentarz 22 listopada 2016 przez użytkownika hoktaur Stary wyjadacz (12,340 punkty)

no to gotowiec:

<?php
        $servername = 'localhost';
        $username = 'test';
        $password = 'test';
        $dbname = 'test';

        $conn = new mysqli($servername, $username, $password, $dbname);

        if ($conn->connect_error) {
                die('Connection failed: ' . $conn->connect_error);
        }

        $lastName = 'loginZPrawdziwegoZdarzenia';
        $email = 'superFajny@email.pl';


        $sql = 'SELECT SUM(Login = \'' . $lastName . '\') AS Login, SUM(eMail = \'' . $email . '\') AS eMail FROM Users';
        $result = $conn->query($sql);
        $row = mysqli_fetch_assoc($result);

        if($row['Login'] != 0) {
                echo 'Podany Login już istnieje! <br />';
        }

        if($row['eMail'] != 0) {
                echo 'Podany Email już istnieje! <br />';
        }

        $conn->close();
?>

 

komentarz 22 listopada 2016 przez użytkownika GhostZoombie Użytkownik (620 punkty)
Dzięki, wszystko działa jak należy! Muszę pamiętać o tablicach haha.
+1 głos
odpowiedź 21 listopada 2016 przez użytkownika Boshi Szeryf (77,220 punkty)
I potrzebujesz aż dwóch zapytań do bazy ?

Bo nie można użyć or ?
komentarz 21 listopada 2016 przez użytkownika GhostZoombie Użytkownik (620 punkty)

Hmm, w sumie też racja. A masz jakiś pomysł jak z tego wyciągnąć pojedynczo email i login? Bo jeśli zwróci mi wartość 1 gdy jeden lub drugi będzie prawdą lub oba to już wcześniej rozwiązałem to tym: 

if(mysqli_errno($conn) == 1062){
   ...
} else { 
   ...
}

 

komentarz 21 listopada 2016 przez użytkownika Boshi Szeryf (77,220 punkty)
ale po co w ogóle sprawdzać jedno i drugie? przecież email jest unikalny, login to samo. Nie może się powtórzyć nigdy, będzie zawsze jeden rekord z takim emailem i loginem.
komentarz 21 listopada 2016 przez użytkownika GhostZoombie Użytkownik (620 punkty)
Chodziło mi o taką opcje że pokazuje że login jest wolny a np. email zajęty lub na odwrót. Chyba że w sumie zbędnie rozbijam to na części.

Podobne pytania

0 głosów
2 odpowiedzi 117 wizyt
pytanie zadane 25 sierpnia 2015 w PHP, Symfony, Zend przez użytkownika daman13m Nowicjusz (160 punkty)
+2 głosów
1 odpowiedź 65 wizyt
0 głosów
1 odpowiedź 53 wizyt
pytanie zadane 4 dni temu w PHP, Symfony, Zend przez użytkownika Hacper Obywatel (1,860 punkty)
...