SELECT COUNT
Pagina: « vorige 1 2 3 4 volgende »
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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)
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
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');
?>
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.
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();
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
Je moet dat stukje van mij direct na deze regel zetten he?
if(mysql_select_db("database", $connect)){
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...
echo $query;
die();
Wat zegt ie nu?
Is alias 'count' niet goed? En de variabelen tussen quotes.. hmm ja, daarom heb ik dat allemaal in een class met functies staan :)
Code (php)
1
2
3
4
5
6
7
8
9
10
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();
}
$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
De alias 'count' is in ieder geval niet handig omdat het ook een functienaam is...
Oke, dan verander ik dat toch... maar ik kom nog niet echt verder.. ondertussen ben ik 3 uur verder.
$query = "SELECT COUNT(*) as aantal FROM person WHERE name = '".$name."' AND password = '".$pass."'";
echo $query;
die();
wat staat er op je scherm nu?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
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
}
?>
$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
je bedoelt SELECT COUNT of $count?
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?
$query = "SELECT COUNT(*) as aantal FROM person WHERE name = '".$name."' AND password = '".$pass."'";
echo $query;
die();
wat staat er op je scherm nu?
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?
Heb je nou al die query ge-echoot? Zij mijn opmerking hierboven?
Code (php)
1
2
3
2
3
if(!mysql_query($pass_count)){
echo 'Error: Could not select:' . mysql_error();
echo '<br/>';
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...
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
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;
}
}
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?
Kortom:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
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
}
$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