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.


<?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?
Ik bedoel in phpmyadmin.
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.
Dit werkt ook niet?

$query = "SELECT COUNT(*) FROM person WHERE name = $name AND password = $pass";
$result = mysql_query($query);
echo 'aantal rijen = ' . $result[0];
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.


<?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");
?>
Wat zegt ie dan als je exact mijn code hierboven gebruikt?

[size=xsmall]Toevoeging op 22/07/2011 14:21:36:[/size]

wat staat er achter aantal rijen?
Ik had jou code idd gebruikt, maar dat mocht niet baten. Er stond niks achter aantal rijen.
tja, dat weet ik het ook ff niet...
Echt irritant, ik ben al 2 uur met dit probleem bezig en wilde vandaag veel programmeren.

Kan iemand mij helpen met mijn probleem?
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.
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'];

Reageren