• 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

VPS Starter Arubacloud
0 głosów
350 wizyt
pytanie zadane 21 listopada 2016 w PHP przez GhostZoombie Użytkownik (640 p.)

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 hoktaur Pasjonat (22,250 p.)
wybrane 22 listopada 2016 przez 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 GhostZoombie Użytkownik (640 p.)
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 hoktaur Pasjonat (22,250 p.)

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 GhostZoombie Użytkownik (640 p.)
Dzięki, wszystko działa jak należy! Muszę pamiętać o tablicach haha.
+1 głos
odpowiedź 21 listopada 2016 przez Boshi VIP (100,240 p.)
I potrzebujesz aż dwóch zapytań do bazy ?

Bo nie można użyć or ?
komentarz 21 listopada 2016 przez GhostZoombie Użytkownik (640 p.)

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 Boshi VIP (100,240 p.)
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 GhostZoombie Użytkownik (640 p.)
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

+1 głos
1 odpowiedź 351 wizyt
0 głosów
2 odpowiedzi 480 wizyt
0 głosów
1 odpowiedź 251 wizyt

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...