Fatal error na toepassen intval & mres
Maar waarom heb je mijn advies niet gewoon opgevolgd, de fout was duidelijk: serial is een varchar en de waarde moet dus tussen ''
Ik had jou tweede antwoord niet gezien had denk ik eroverheen gelezen en zag hem nu pas dus jij zegt de () na affected_rows weghalen!
Als ik jou () weghaal en jou tweede antwoord van line 15 toepas dan krijg ik het volgende
Array
(
[page] => account-activeren
[id] => 90
[serial] => I7GcDnFiHEMhJd043OAgBP6akpNClKmeoL9f1jb285
)
object(stdClass)#4 (2) {
["id"]=>
string(2) "90"
["serial"]=>
string(42) "I7GcDnFiHEMhJd043OAgBP6akpNClKmeoL9f1jb285"
}
object(mysqli_result)#2 (5) {
["current_field"]=>
int(0)
["field_count"]=>
int(2)
["lengths"]=>
NULL
["num_rows"]=>
int(1)
["type"]=>
int(0)
}
Er ging is verkeerd tijdens het updata van de database, probeer het opnieuw
Code (php)
1
2
3
2
3
<?php
$check_result = $mysqli->query("select id, serial from companion where id = ". intval($_GET['id']) . " and serial = '".$serial_data. "'");
?>
$check_result = $mysqli->query("select id, serial from companion where id = ". intval($_GET['id']) . " and serial = '".$serial_data. "'");
?>
Gewijzigd op 17/11/2012 20:04:54 door Bart V B
Als jij op "" doelt dat heb ik al geprobeerd ik hoop meer eigenlijk dat me server in de fik vliegt.
Begin een beetje gefrusteerd te raken hier met al die ERRORS voor me neus.
Er is zoveel in het script veranderd en aangepast dat ik hem nauwelijks nog begrijp en weet echt niet waar ik zoeken moet voor een fout.
Gewijzigd op 17/11/2012 20:21:24 door Peter Overdam
Vervang daarvan regel 15 door de code die Bart quote (de bovenste).
PS.
'Goed' bezig Marco
Gewijzigd op 17/11/2012 20:23:48 door Ger van Steenderen
Heb nu Marco's script van de vorige pagina weer teruggeplaatst heb line 15 vervangen door:
Code (php)
1
2
3
2
3
<?php
$check_result = $mysqli->query("select id, serial from companion where id = ". intval($_GET['id']) . " and serial = '".$serial_data. "'");
?>
$check_result = $mysqli->query("select id, serial from companion where id = ". intval($_GET['id']) . " and serial = '".$serial_data. "'");
?>
En krijg daarna weer een foutmelding
Array
(
[page] => account-activeren
[id] => 90
[serial] => I7GcDnFiHEMhJd043OAgBP6akpNClKmeoL9f1jb285
)
object(stdClass)#4 (2) {
["id"]=>
string(2) "90"
["serial"]=>
string(42) "I7GcDnFiHEMhJd043OAgBP6akpNClKmeoL9f1jb285"
}
object(mysqli_result)#2 (5) {
["current_field"]=>
int(0)
["field_count"]=>
int(2)
["lengths"]=>
NULL
["num_rows"]=>
int(1)
["type"]=>
int(0)
}
Fatal error: Call to undefined method mysqli::affected_rows() in /var/www/vhosts/7/125190/webspace/httpdocs/mijndomein.nl/modules/account/activate-account.php on line 34
Gewijzigd op 17/11/2012 20:33:26 door Peter Overdam
Thnx Ger.. (schaamte dat ik daar overheen kijk)
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
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
<?php
// dit stukje weg halen of uit zetten als je hem online/'live' zet...
echo '<pre>'.print_r($_GET, true).'<pre>';
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Get the needed data
if( isset($_GET['id']) && isset($_GET['serial']) ):
if ( is_numeric($_GET['id']) && !is_null($_GET['id']) && (int)$_GET['id'] && !empty($_GET['id']) && !is_null($_GET['serial']) && !empty($_GET['serial']) && is_string($_GET['serial']) ):
// contoleer de serial...
$serial_data = $mysqli->real_escape_string($_GET['serial']);
$check_result = $mysqli->query("select id, serial from companion where id = ". intval($_GET['id']) . " and serial = '".$serial_data. "'");
// echo '<pre>';
// echo var_dump(check_result);
// echo '</pre>';
if( $check_result ):
$sql = 'update companion set active = 1 where id = '.(int)$_GET['id'].' limit 1';
$result = $mysqli->query($sql);
if ( $mysqli->affected_rows == 1 ):
echo 'Uw account is geactiveerd';
else: // else als er niks is bijgewerkt in de database...
echo 'Er ging is verkeerd tijdens het update van de database, probeer het opnieuw a.u.b';
endif;
else: // else als er iets verkeerds is met de activatie serial...
echo 'Verkeerde activatie gegevens, controleer de url in uw activatie mail.';
endif;
else: // else if het id en/of de serial zijn niet correct...
echo 'Een van de mee gegeven data is incorrect, controlleer uw invoer!.';
endif;
else: // else als er geen id of serial gevonden word...
echo 'Er is iets niet goed gegaan neem contact op met de webmaster';
endif;
?>
// dit stukje weg halen of uit zetten als je hem online/'live' zet...
echo '<pre>'.print_r($_GET, true).'<pre>';
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Get the needed data
if( isset($_GET['id']) && isset($_GET['serial']) ):
if ( is_numeric($_GET['id']) && !is_null($_GET['id']) && (int)$_GET['id'] && !empty($_GET['id']) && !is_null($_GET['serial']) && !empty($_GET['serial']) && is_string($_GET['serial']) ):
// contoleer de serial...
$serial_data = $mysqli->real_escape_string($_GET['serial']);
$check_result = $mysqli->query("select id, serial from companion where id = ". intval($_GET['id']) . " and serial = '".$serial_data. "'");
// echo '<pre>';
// echo var_dump(check_result);
// echo '</pre>';
if( $check_result ):
$sql = 'update companion set active = 1 where id = '.(int)$_GET['id'].' limit 1';
$result = $mysqli->query($sql);
if ( $mysqli->affected_rows == 1 ):
echo 'Uw account is geactiveerd';
else: // else als er niks is bijgewerkt in de database...
echo 'Er ging is verkeerd tijdens het update van de database, probeer het opnieuw a.u.b';
endif;
else: // else als er iets verkeerds is met de activatie serial...
echo 'Verkeerde activatie gegevens, controleer de url in uw activatie mail.';
endif;
else: // else if het id en/of de serial zijn niet correct...
echo 'Een van de mee gegeven data is incorrect, controlleer uw invoer!.';
endif;
else: // else als er geen id of serial gevonden word...
echo 'Er is iets niet goed gegaan neem contact op met de webmaster';
endif;
?>
Gewijzigd op 17/11/2012 21:16:23 door Marco PHPJunky
Marco PHPJunky op 17/11/2012 20:32:54:
Damm dat ga je niet menen heb ik daar overheen gekeken jo..
Thnx Ger.. (schaamte dat ik daar overheen kijk)
Thnx Ger.. (schaamte dat ik daar overheen kijk)
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
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
<?php
// dit stukje weg halen of uit zetten als je hem online/'live' zet...
echo '<pre>'.print_r($_GET, true).'<pre>';
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Get the needed data
if( isset($_GET['id']) && isset($_GET['serial']) ):
if ( is_numeric($_GET['id']) && !is_null($_GET['id']) && (int)$_GET['id'] && !empty($_GET['id']) && !is_null($_GET['serial']) && !empty($_GET['serial']) && is_string($_GET['serial']) ):
// contoleer de serial...
$serial_data = $mysqli->real_escape_string($_GET['serial']);
$check_result = $mysqli->query("select id, serial from companion where id = ". intval($_GET['id']) . " and serial = '".$serial_data. "' limit 1"); if( $check_result ):
// echo '<pre>';
// echo var_dump(check_result);
// echo '</pre>';
if( $check_result ):
$sql = "update companion set active = 1 where id = '".(int)$_GET['id']."' limit 1";
$result = $mysqli->query($sql);
if ( $mysqli->affected_rows == 1 ):
echo 'Uw account is geactiveerd';
else: // else als er niks is bijgewerkt in de database...
echo 'Er ging is verkeerd tijdens het updata van de database, probeer het opnieuw a.u.b';
endif;
else: // else als er iets verkeerds is met de activatie serial...
echo 'Verkeerde activatie gegevens, controleer de url in uw activatie mail.';
endif;
else: // else if het id en/of de serial zijn niet correct...
echo 'Een van de mee gegeven data is incorrect, controlleer uw invoer!.';
endif;
else: // else als er geen id of serial gevonden word...
echo 'Er is iets niet goed gegaan neem contact op met de webmaster';
endif;
?>
// dit stukje weg halen of uit zetten als je hem online/'live' zet...
echo '<pre>'.print_r($_GET, true).'<pre>';
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Get the needed data
if( isset($_GET['id']) && isset($_GET['serial']) ):
if ( is_numeric($_GET['id']) && !is_null($_GET['id']) && (int)$_GET['id'] && !empty($_GET['id']) && !is_null($_GET['serial']) && !empty($_GET['serial']) && is_string($_GET['serial']) ):
// contoleer de serial...
$serial_data = $mysqli->real_escape_string($_GET['serial']);
$check_result = $mysqli->query("select id, serial from companion where id = ". intval($_GET['id']) . " and serial = '".$serial_data. "' limit 1"); if( $check_result ):
// echo '<pre>';
// echo var_dump(check_result);
// echo '</pre>';
if( $check_result ):
$sql = "update companion set active = 1 where id = '".(int)$_GET['id']."' limit 1";
$result = $mysqli->query($sql);
if ( $mysqli->affected_rows == 1 ):
echo 'Uw account is geactiveerd';
else: // else als er niks is bijgewerkt in de database...
echo 'Er ging is verkeerd tijdens het updata van de database, probeer het opnieuw a.u.b';
endif;
else: // else als er iets verkeerds is met de activatie serial...
echo 'Verkeerde activatie gegevens, controleer de url in uw activatie mail.';
endif;
else: // else if het id en/of de serial zijn niet correct...
echo 'Een van de mee gegeven data is incorrect, controlleer uw invoer!.';
endif;
else: // else als er geen id of serial gevonden word...
echo 'Er is iets niet goed gegaan neem contact op met de webmaster';
endif;
?>
Hey Marco dit script hierboven bevat een fout dit geeft hij al aan in Dreamweaver en als ik hem toch upload en uitprobeer dan doet hij helemaal niks zelfs geen foutmelding.
is aangepast in het script hierboven...
Krijg geen foutmelding meer, maar krijg wel de melding dat bij het updaten iets verkeerd is gegaan
Array
(
[page] => account-activeren
[id] => 90
[serial] => I7GcDnFiHEMhJd043OAgBP6akpNClKmeoL9f1jb285
)
Er ging is verkeerd tijdens het updata van de database, probeer het opnieuw
Url is goed en de database gegevens kloppen ook.
Greetz
Peter
Of ik moet weer even snel ergens overheen kijken maar daar wil ik niet vanuit gaan :$
Er wordt gechecked of het id en de serial kloppen met de $_GET-waarden:
- $check_result = $mysqli->query("select id, serial from companion where id = ". intval($_GET['id']) . " and serial = '".$serial_data. "' limit 1");
Als de query lukt:
- if( $check_result ):
Dan wordt active op 1 gezet:
- $sql = "update companion set active = 1 where id = '".(int)$_GET['id']."' limit 1";
- $result = $mysqli->query($sql);
Maar als een query lukt wil dat nog helemaal niet zeggen dat er ook iets is gevonden. Zoals het nu is wordt elk id in een $_GET, ongeacht de serial, op active = 1 gezet.
Fout zat aan mijn kant jongens kennelijk was door een script eerder de active value op 1 gezet waardoor die dus de melding gaf:
Er ging is verkeerd tijdens het updata van de database, probeer het opnieuw
Maar nu geeft hij netjes het volgende aan
Array
(
[page] => account-activeren
[id] => 90
[serial] => I7GcDnFiHEMhJd043OAgBP6akpNClKmeoL9f1jb285
)
Uw account is geactiveerd
Marco mag ik jou heel hartelijk bedanken voor je inzet en dat op je vrije zaterdag. Ik ga dit script eens even goed bekijken met mijn PHP Boeken om wat bij te leren zodat ik het nieuwe gedeelte snap.
Greetz
Peter
@Peter: Probeer het nu nog eens met een nieuw account en dan met het juiste id en een onjuist serial. Volgens mij activeert ie dan ook.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$sql = "UPDATE companions SET active = 1
WHERE id = " . (int) $_GET['id'] . "
AND serial = '" . $mysqli->real_escape_string($_GET['serial']) . "
AND active <> 1";
$result = $mysqli->query($sql)
if ($result) {
if ($mysqli->affected_rows === 1) {
echo 'Je account is geactiveerd';
}
else {
echo 'Je hebt je acoount reeds geactiveerd of een onjuiste waarde opgegeven';
}
}
else {
echo 'We hebben vandaag geen zin in nieuwe leden, probeer het morgen nog maar eens';
}
$sql = "UPDATE companions SET active = 1
WHERE id = " . (int) $_GET['id'] . "
AND serial = '" . $mysqli->real_escape_string($_GET['serial']) . "
AND active <> 1";
$result = $mysqli->query($sql)
if ($result) {
if ($mysqli->affected_rows === 1) {
echo 'Je account is geactiveerd';
}
else {
echo 'Je hebt je acoount reeds geactiveerd of een onjuiste waarde opgegeven';
}
}
else {
echo 'We hebben vandaag geen zin in nieuwe leden, probeer het morgen nog maar eens';
}
Gewijzigd op 17/11/2012 21:48:24 door Ger van Steenderen
Je hebt gelijk nieuw account aangemaakt id 92 en serial opgegeven van oud account en hij zet active op 1.
@Ger
Ik wacht even op antwoord van Marco aangezien hij veel tijd erin heeft gestoken in ieder geval bedankt voor de hulp.
Greetz
Peter
Gewijzigd op 17/11/2012 21:53:52 door Peter Overdam
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
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
<?php
// dit stukje weg halen of uit zetten als je hem online/'live' zet...
echo '<pre>'.print_r($_GET, true).'<pre>';
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Get the needed data
if( isset($_GET['id']) && isset($_GET['serial']) ):
if ( is_numeric($_GET['id']) && !is_null($_GET['id']) && (int)$_GET['id'] && !empty($_GET['id']) && !is_null($_GET['serial']) && !empty($_GET['serial']) && is_string($_GET['serial']) ):
// contoleer de serial...
$serial_data = $mysqli->real_escape_string($_GET['serial']);
$check_result = $mysqli->query("select id, serial from companion where id = ". intval($_GET['id']) . " and serial = '".$serial_data. "'");
if( $check_result ):
$sql = "update companion set active = 1 where id = ".(int)$_GET['id']." and active <> 1 and serial = '" . $serial_data . "' limit 1";
$result = $mysqli->query($sql);
if ( $result ):
if ( $mysqli->affected_rows === 1 ):
echo 'Uw account is geactiveerd';
else: // Al actief of klopt niet...
echo 'Uw account is al geactiveerd of uw gegevens kloppen niet.<br /> mocht dit probleem zich blijven voordoen neem dan contact op met de webmaster.';
endif;
else: // ging wat fout
echo 'Verkeerde activatie gegevens, controleer de url in uw activatie mail.<br /> mocht dit probleem zich blijven voordoen neem dan contact op met de webmaster.';
endif;
else: // else als er iets verkeerds is met de activatie serial...
echo 'Verkeerde activatie gegevens, controleer de url in uw activatie mail.';
endif;
else: // else if het id en/of de serial zijn niet correct...
echo 'Een van de mee gegeven data is incorrect, controlleer uw invoer!.';
endif;
else: // else als er geen id of serial gevonden word...
echo 'Er is iets niet goed gegaan neem contact op met de webmaster';
endif;
?>
// dit stukje weg halen of uit zetten als je hem online/'live' zet...
echo '<pre>'.print_r($_GET, true).'<pre>';
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Get the needed data
if( isset($_GET['id']) && isset($_GET['serial']) ):
if ( is_numeric($_GET['id']) && !is_null($_GET['id']) && (int)$_GET['id'] && !empty($_GET['id']) && !is_null($_GET['serial']) && !empty($_GET['serial']) && is_string($_GET['serial']) ):
// contoleer de serial...
$serial_data = $mysqli->real_escape_string($_GET['serial']);
$check_result = $mysqli->query("select id, serial from companion where id = ". intval($_GET['id']) . " and serial = '".$serial_data. "'");
if( $check_result ):
$sql = "update companion set active = 1 where id = ".(int)$_GET['id']." and active <> 1 and serial = '" . $serial_data . "' limit 1";
$result = $mysqli->query($sql);
if ( $result ):
if ( $mysqli->affected_rows === 1 ):
echo 'Uw account is geactiveerd';
else: // Al actief of klopt niet...
echo 'Uw account is al geactiveerd of uw gegevens kloppen niet.<br /> mocht dit probleem zich blijven voordoen neem dan contact op met de webmaster.';
endif;
else: // ging wat fout
echo 'Verkeerde activatie gegevens, controleer de url in uw activatie mail.<br /> mocht dit probleem zich blijven voordoen neem dan contact op met de webmaster.';
endif;
else: // else als er iets verkeerds is met de activatie serial...
echo 'Verkeerde activatie gegevens, controleer de url in uw activatie mail.';
endif;
else: // else if het id en/of de serial zijn niet correct...
echo 'Een van de mee gegeven data is incorrect, controlleer uw invoer!.';
endif;
else: // else als er geen id of serial gevonden word...
echo 'Er is iets niet goed gegaan neem contact op met de webmaster';
endif;
?>
Gewijzigd op 17/11/2012 22:10:48 door Marco PHPJunky
Na uitgebreid testen met verschillende mogelijkheden en opties werkt hij nu helemaal correct. Mag ik jou wederom heel erg bedanken.
Vergeet je niet de array bovenaan uit te zetten want ik zie dat hij nog aanstaat bij je :P
En de tekst loopt nog een beetje achter de kolom aan de rechterkant.
Dat.moet ik inderdaad nog ff uitzetten ga dat ff straks doen en het klopt dat die tekst erachter loopt daar marge moet ik nog een beetje aanpassen maar dat komt goed.
Nogmaals heel erg bedankt