SELECT COUNT

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3 4 volgende »

Sven b

Sven b

22/07/2011 14:58:22
Quote Anchor link
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
      
 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!';
        }


Ik heb de quotes eruit gehaald. Voor foutafhandeling heb ik dit: mysql_error(); en het volgende script:
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
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);

function
error($iLevel, $sMessage, $sFile, $iLine)
{

    $aLevels = array(
                2 => 'WARNING',
                8 => 'NOTICE',
                256 => 'FATAL ERROR',
                512 => 'WARNING',
                1024 => 'NOTICE' );
    
    if(array_key_exists($iLevel, $aLevels))
    {

        $sLevel = $aLevels[$iLevel];
    }

    else
    {
        $sLevel = 'ONBEKENDE FOUT';
    }

    
    echo 'Er is een fout opgetreden!<br />';
    echo 'Foutsoort: '.$sLevel.'<br />';
    echo 'Foutmelding: '.$sMessage.'<br />';
    echo 'Bestand: '.$sFile.'<br />';
    echo 'Regel: '.$iLine.'<br />';
    
    if($iLevel == 256)
    {

        echo 'Script wordt gestopt...';
        exit();
    }            
}

set_error_handler('error');
?>


Ik blijf dezelfde fout houden...

Toevoeging op 22/07/2011 15:04:33:

Owhnee, ik krijg deze foutmelding... zat met verkeerde bestand in de weer...

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


Deze foutmelding heb ik al 2 uur dus ik zou niet weten hoe ik dit moet oplossen.
 
PHP hulp

PHP hulp

06/05/2024 20:05:50
 
Ozzie PHP

Ozzie PHP

22/07/2011 15:04:37
Quote Anchor link
Ja, maar wat krijg je nu dan als je mijn code gebruikt?

Gebruik dit eens en vertel me dan eens exact wat er op het scherm staat?

$query = "SELECT COUNT(*) as count FROM person WHERE name = $name AND password = $pass";
echo $pass . $name . '<br/>';
$result = mysql_query($query);
$row = mysql_fetch_array($result);
echo 'aantal rijen = ';
var_dump($row[0]);
die();
 
Sven b

Sven b

22/07/2011 15:07:34
Quote Anchor link
Ozzie php, bij aantal rijen krijg ik niks op het scherm.

Toevoeging op 22/07/2011 15:08:57:

Er is een fout opgetreden!
Foutsoort: WARNING
Foutmelding: mysql_fetch_array() expects parameter 1 to be resource, boolean given
Bestand: C:\xampp\htdocs\logtest\testcount2.php
Regel: 7
aantal rijen = NULL
 
Ozzie PHP

Ozzie PHP

22/07/2011 15:09:29
Quote Anchor link
je zou toch echt IETS moeten zien... aangezien het een var_dump is. Kopieer eens letterlijk wat er op het scherm staat?

Je moet dat stukje van mij direct na deze regel zetten he?

if(mysql_select_db("database", $connect)){
 
Joren de Wit

Joren de Wit

22/07/2011 15:12:59
Quote Anchor link
Nogmaals, kijk naar je foutafhandeling. Echo de uitgevoerde query als je query mislukt. Dan zie je pas wat er fout gaat! De fout zit op dit moment in de uitgevoerde query...
 
Ozzie PHP

Ozzie PHP

22/07/2011 15:14:00
Quote Anchor link
$query = "SELECT COUNT(*) as count FROM person WHERE name = $name AND password = $pass";
echo $query;
die();

Wat zegt ie nu?
 
Joren de Wit

Joren de Wit

22/07/2011 15:15:12
Quote Anchor link
@Ozzie: geef als test query dan wel het goede voorbeeld (alias en quotes):

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query
= "SELECT COUNT(*) as aantal FROM person WHERE name = '".$name."' AND password = '".$pass."'";
?>
 
Ozzie PHP

Ozzie PHP

22/07/2011 15:19:24
Quote Anchor link
Is alias 'count' niet goed? En de variabelen tussen quotes.. hmm ja, daarom heb ik dat allemaal in een class met functies staan :)
 
Sven b

Sven b

22/07/2011 15:20:36
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
if(isset($_POST['submit'])){
$query = "SELECT COUNT(*) as aantal FROM person WHERE name = '".$name."' AND password = '".$pass."'";

echo $pass . $name . '<br/>';
$result = mysql_query($query);
$row = mysql_fetch_array($result);
echo 'aantal rijen = ';
var_dump($row[0]);
die();
 }



Error:

Er is een fout opgetreden!
Foutsoort: WARNING
Foutmelding: mysql_fetch_array() expects parameter 1 to be resource, boolean given
Bestand: C:\xampp\htdocs\logtest\testcount2.php
Regel: 8
aantal rijen = NULL
 
Joren de Wit

Joren de Wit

22/07/2011 15:21:00
Quote Anchor link
De alias 'count' is in ieder geval niet handig omdat het ook een functienaam is...
 
Sven b

Sven b

22/07/2011 15:24:06
Quote Anchor link
Oke, dan verander ik dat toch... maar ik kom nog niet echt verder.. ondertussen ben ik 3 uur verder.
 
Ozzie PHP

Ozzie PHP

22/07/2011 15:24:21
Quote Anchor link
@Sven, echo even de query zelf:

$query = "SELECT COUNT(*) as aantal FROM person WHERE name = '".$name."' AND password = '".$pass."'";
echo $query;
die();

wat staat er op je scherm nu?
 
Joren de Wit

Joren de Wit

22/07/2011 15:24:49
Quote Anchor link
Meest basic foutafhandeling:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$sql
= "...";

$result = mysql_query($sql);

if($result == false) {
  trigger_errir(mysql_error().' <br/>In query: '.$sql);
}

else {
 // Verder met uitvoer script
}
?>


ps. En uiteraard moet je wel zorgen dan $name en $pass gevuld zijn als je die query wilt uitvoeren...
Gewijzigd op 22/07/2011 15:25:35 door Joren de Wit
 
Sven b

Sven b

22/07/2011 15:26:38
Quote Anchor link
je bedoelt SELECT COUNT of $count?
 
Ozzie PHP

Ozzie PHP

22/07/2011 15:28:53
Quote Anchor link
Ozzie PHP op 22/07/2011 15:24:21:
@Sven, echo even de query zelf:

$query = "SELECT COUNT(*) as aantal FROM person WHERE name = '".$name."' AND password = '".$pass."'";
echo $query;
die();

wat staat er op je scherm nu?
 
Sven b

Sven b

22/07/2011 15:34:26
Quote Anchor link
Hmm, krijg nu heel wat anders...

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 '1' at line 1
Het wachtwoord komt overeen.

Omdat ik in eerste instantie de naam en paswoord er 8x heb in zitten, omdat ik met mijn login ben bezig geweest. Nu is het zo dat ik 1 nieuwe heb gemaakt en nu komt het wachtwoord overeen.

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

Hier krijg ik wel de output van.. waarschijnlijk klopt de gehele if statement niet, maarja je moet wat proberen. Als ik dat hele blok met mysql_error eruit haal dan heb ik helemaal geen foutmelding meer.

Is dat een goed teken?
 
Ozzie PHP

Ozzie PHP

22/07/2011 15:37:12
Quote Anchor link
Heb je nou al die query ge-echoot? Zij mijn opmerking hierboven?
 
Joren de Wit

Joren de Wit

22/07/2011 15:37:12
Quote Anchor link
Nee, dat is geen goed teken! Dan geef je de fout alleen niet weer, maar de fout zelf is er nog steeds...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
if(!mysql_query($pass_count)){
echo 'Error: Could not select:' . mysql_error();
echo '<br/>';

Bovendien geef je in dit stukje foutafhandeling nog steeds niet de query die fout gegaan is. Echo dus ook altijd, in dit geval, $pass_count zodat je weet hoe de uitgevoerde query eruit zag...
 
Sven b

Sven b

22/07/2011 15:44:02
Quote Anchor link
Oke, ik heb de error handeling terug gezet... nieuwe code:
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
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."'");
            $pass_count = mysql_result($pass_check,0);
             if(!mysql_query($pass_count)){
                 echo 'Error: Could not select:' . mysql_error(). '<br/>';
                 echo 'User: '.$name. '<br/>';
                 echo 'Pass: '.$pass.'<br/>';
                 echo 'Count: '.$pass_count.'<br/>';
                 echo '<br/>';
            }  
            if ($pass_count == 1) {
                echo "Het wachtwoord komt overeen.<br/>";
            } elseif ($pass_count ==0 AND !empty($_POST['password'])) {
                echo "Dit wachtwoord bestaat niet.<br/>";
                echo $pass_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;
   }
}


Error report:
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 '1' at line 1
User: sven
Pass: x
Count: 1

Zo beter?

Toevoeging op 22/07/2011 15:50:17:

In SQL:

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

SELECT COUNT( * )
FROM persons
WHERE name = '$name'
AND PASSWORD = '$pass'

Pakt hij PASSWORD nu als een column?
 
Joren de Wit

Joren de Wit

22/07/2011 15:50:30
Quote Anchor link
Nee, je moet de query echoën waar je script op stuk loopt. Zonder dat je die query ziet, weet je toch niet waar die foutmelding op slaat?

Kortom:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$sql
= "SELECT COUNT(*) FROM persons WHERE name = '".$name."' AND password = '".$pass."'";
$result = mysql_query($sql);

if($result == false) {
  trigger_error(mysql_error().' <br/>In query: '.$sql);
}

else {
 $pass_count = mysql_result($result, 0);

 // Verder met je if-statement
}
Gewijzigd op 22/07/2011 15:54:21 door Joren de Wit
 

Pagina: « vorige 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.