SELECT COUNT
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.
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?
Code (php)
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
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");
?>
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?
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");
$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");
Bedankt voor de snelle reactie, maar krijg de zelfde foutmelding. Nog andere suggesties?
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?
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?
Als antwoord krijg ik NULL, maar wanneer ik de exit weghaal krijg ik alsnog dezelfde errors.
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.
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.
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?
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?
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.
Ik denk dat de fout bij je input ligt.
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?
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?
Maar hij moet toch 1 teruggeven ipv 0? Vul eens een juiste naam en wachtwoord in?
Dat doe ik al de hele tijd.. maar krijg dus die error binnen.
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];
$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.
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)
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
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");
?>
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?
Toevoeging op 22/07/2011 14:21:36:
wat staat er achter aantal rijen?
Toevoeging op 22/07/2011 14:21:36:
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?
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.
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'];
$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'];




