SELECT COUNT

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 4 volgende »

Sven b

Sven b

22/07/2011 13:03:22
Quote Anchor link
In het volgende script ben ik aan een login pagina aan het werken. Ja, encrypten ontbreekt en ja, ik heb geen htmlentities/ mysql_real_escape_string gebruikt. Mij gaat het er even om om een simpele count te doen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
require_once("header.php");
echo '<br/>';
echo '<br/>';

if(isset($_POST['submit'])){
   if(!empty($_POST['name']) AND !empty($_POST['password'])){
      $name = $_POST['name'];
      $pass = $_POST['password'];
      if (preg_match ('/^[A-Za-z. -]+$/', $name)){
        if(mysql_select_db("database", $connect)){
            $pass_check = mysql_query("SELECT COUNT(*) FROM person WHERE name == '$name' AND password == '$pass'");
            if(!mysql_query($pass_check)){
                 echo 'Error: Could not select:' . mysql_error();
                 echo '<br/>';
            }

            $count = mysql_result($pass_check,0);
            if ($count == 1) {
                echo "Het wachtwoord komt overeen.<br/>";
            }
elseif ($count ==0 AND !empty($_POST['password'])) {
                echo "Dit wachtwoord bestaat niet.<br/>";
                echo $count;
            }
        }

        else{
          echo 'Couldnt connect to db!';
        }
      }

      else {
        echo 'Didnt used the right characters!';
      }
}

   else {
      echo 'U dient de verplichte velden in te vullen.';
      $name = FALSE;
      $pass = FALSE;
   }
}

?>


<form action="" method="post">
<table>
<tr>
  <td>Username</td>
  <td><input type="text" name="name" size="20" maxlenght="20"></td>
</tr>
<tr>
  <td>Password</td>
  <td><input type="password" name="password"></td>
</tr>
<tr>
  <td></td>
  <td><input type="submit" name="submit" value="Registreer"></td>
</tr>
</table>
</form>


<?php
echo '<br/>';
echo '<br/>';
echo '<br/>';
echo '<br/>';
echo '<br/>';
require("footer.php");
?>


Dit is mijn foutmelding:

Error: Could not select:Query was empty
Er is een fout opgetreden!
Foutsoort: WARNING
Foutmelding: mysql_result() expects parameter 1 to be resource, boolean given
Bestand: C:\xampp\htdocs\logtest\login.php
Regel: 17
Dit wachtwoord bestaat niet.

Wat doe ik fout?
 
PHP hulp

PHP hulp

21/11/2024 21:09:33
 
Ozzie PHP

Ozzie PHP

22/07/2011 13:12:21
Quote Anchor link
verander

$pass_check = mysql_query("SELECT COUNT(*) FROM person WHERE name == '$name' AND password == '$pass'");

eens in

$pass_check = mysql_query("SELECT COUNT(*) FROM person WHERE name = $name AND password = $pass");
 
Sven b

Sven b

22/07/2011 13:14:13
Quote Anchor link
Bedankt voor de snelle reactie, maar krijg de zelfde foutmelding. Nog andere suggesties?
 
Ozzie PHP

Ozzie PHP

22/07/2011 13:29:11
Quote Anchor link
Hmmm, ben hier ook niet goed in hoor... meestal gewoon even wat proberen.

Probeer dit eens:

$pass_check = mysql_query("SELECT COUNT(*) as count FROM person WHERE name = $name AND password = $pass");
var_dump($pass_check[0]);
exit();

Wat krijg je nu op je scherm te zien?
 
Sven b

Sven b

22/07/2011 13:34:01
Quote Anchor link
Als antwoord krijg ik NULL, maar wanneer ik de exit weghaal krijg ik alsnog dezelfde errors.
 
Ozzie PHP

Ozzie PHP

22/07/2011 13:38:46
Quote Anchor link
dat is logisch dat je dan dezelfde errors krijgt....

Maar je query gaat dus fout en levert als resultaat NULL op.
Probeer je query eens in te voeren in PHPMyAdmin en kijk of je dan wel resultaat krijgt.
 
Sven b

Sven b

22/07/2011 13:49:29
Quote Anchor link
heb ik zojuist gedaan...

SELECT COUNT(*) FROM persons WHERE name = '{$name}' AND password = '{$pass}'

COUNT(*)
0

Dus de voor de count werkt voor sql wel, maar roep hem niet goed aan dan?
 
Roel -

Roel -

22/07/2011 13:55:46
Quote Anchor link
Nee maar dat komt omdat je nu een stuk PHP code in je SQL gooit. Nu matcht ie op name = '{$name}' en password = '{$pass}', voordat de PHP parser die heeft omgezet naar iets anders.

Ik denk dat de fout bij je input ligt.
 
Sven b

Sven b

22/07/2011 13:55:47
Quote Anchor link
Ik krijg wel van deze code ook een error binnen.

if(!mysql_query($pass_check)){
echo 'Error: Could not select:' . mysql_error();
echo '<br/>';
}

Wanneer hij niet de query op de $pass_check kan uitvoeren? Of wat houdt dit precies in?

Toevoeging op 22/07/2011 13:56:40:

mijn input? Hoe bedoel je dat?

Als mijn input niet klopt bijv dat een user of pass niet overeenkomt dan moet hij 0 afgeven. Toch?
 
Ozzie PHP

Ozzie PHP

22/07/2011 13:56:46
Quote Anchor link
Maar hij moet toch 1 teruggeven ipv 0? Vul eens een juiste naam en wachtwoord in?
 
Sven b

Sven b

22/07/2011 13:57:33
Quote Anchor link
Dat doe ik al de hele tijd.. maar krijg dus die error binnen.
 
Ozzie PHP

Ozzie PHP

22/07/2011 13:57:57
Quote Anchor link
Ik bedoel in phpmyadmin.
 
Sven b

Sven b

22/07/2011 13:59:40
Quote Anchor link
ja als ik dat doe dan krijg ik een count van 8 terug, omdat ik die naam al 8x in mijn login script heb ingevoerd. Dus of hij nu 0 of 8 terug geeft dat is allemaal goed, maar krijg nu in php dus helemaal niks terug.
 
Ozzie PHP

Ozzie PHP

22/07/2011 14:12:53
Quote Anchor link
Dit werkt ook niet?

$query = "SELECT COUNT(*) FROM person WHERE name = $name AND password = $pass";
$result = mysql_query($query);
echo 'aantal rijen = ' . $result[0];
 
Sven b

Sven b

22/07/2011 14:19:04
Quote Anchor link
Nee, dan krijg ik ook niks...

Error: Could not select:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '8' at line 1

Ik heb nu deze error.. ik weet niet of ik nu vooruit of achteruit ga, maar die 8 staat voor de aantal die hij gevonden heeft. Ik snap alleen niet hoe hij die syntax fout ziet staan.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
require_once("header.php");
echo '<br/>';
echo '<br/>';

if(isset($_POST['submit'])){
   if(!empty($_POST['name']) AND !empty($_POST['password'])){
      $name = $_POST['name'];
      $pass = $_POST['password'];
      if (preg_match ('/^[A-Za-z. -]+$/', $name)){
        if(mysql_select_db("database", $connect)){
            $pass_check = mysql_query("SELECT COUNT(*) FROM persons WHERE name = '{$name}' AND password = '{$pass}'");
            $count = mysql_result($pass_check,0);
             if(!mysql_query($count)){
                 echo 'Error: Could not select:' . mysql_error();
                 echo '<br/>';
            }
  
            if ($count == 1) {
                echo "Het wachtwoord komt overeen.<br/>";
            }
elseif ($count ==0 AND !empty($_POST['password'])) {
                echo "Dit wachtwoord bestaat niet.<br/>";
                echo $count;
                
            }
        }

        else{
          echo 'Couldnt connect to db!';
        }
      }

      else {
        echo 'Didnt used the right characters!';
      }
}

   else {
      echo 'U dient de verplichte velden in te vullen.';
      $name = FALSE;
      $pass = FALSE;
   }
}

?>


<form action="" method="post">
<table>
<tr>
  <td>Username</td>
  <td><input type="text" name="name" size="20" maxlenght="20"></td>
</tr>
<tr>
  <td>Password</td>
  <td><input type="password" name="password"></td>
</tr>
<tr>
  <td></td>
  <td><input type="submit" name="submit" value="Registreer"></td>
</tr>
</table>
</form>


<?php
echo '<br/>';
echo '<br/>';
echo '<br/>';
echo '<br/>';
echo '<br/>';
require("footer.php");
?>
 
Ozzie PHP

Ozzie PHP

22/07/2011 14:21:05
Quote Anchor link
Wat zegt ie dan als je exact mijn code hierboven gebruikt?

Toevoeging op 22/07/2011 14:21:36:

wat staat er achter aantal rijen?
 
Sven b

Sven b

22/07/2011 14:23:41
Quote Anchor link
Ik had jou code idd gebruikt, maar dat mocht niet baten. Er stond niks achter aantal rijen.
 
Ozzie PHP

Ozzie PHP

22/07/2011 14:27:08
Quote Anchor link
tja, dat weet ik het ook ff niet...
 
Sven b

Sven b

22/07/2011 14:28:20
Quote Anchor link
Echt irritant, ik ben al 2 uur met dit probleem bezig en wilde vandaag veel programmeren.

Kan iemand mij helpen met mijn probleem?
 
Joren de Wit

Joren de Wit

22/07/2011 14:41:37
Quote Anchor link
De code van Ozzie klopt niet, daar wordt vergeten het resultaat te fetchen.

Maar begin eens bij het begin:
- Variabelen buiten quotes (in je sql query)
- Degelijke foutafhandeling, waarin je ook de uitgevoerde query weergeeft als er iets fout gaat (tip: zet de query dus eerst in een variabele).
- Foutmeldingen 1 voor 1 wegwerken, te beginnen met de eerste die je krijgt.
 
Ozzie PHP

Ozzie PHP

22/07/2011 14:55:20
Quote Anchor link
Zo dan?

$query = "SELECT COUNT(*) as count FROM person WHERE name = $name AND password = $pass";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
echo 'aantal rijen = ' . $row['count'];
 

Pagina: 1 2 3 4 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.