Hoi hoi ik ben al aan het puzzelen geweest maar kan de oplossing niet snel vinden.
Bij het registreren op de website wordt namelijk netjes het ip van de bezoeker gelogd.
Bij het inloggen op de website wil ik dat het ip adres netjes geupdate wordt als de bezoeker op een ander adres zit.
Ik heb hier het stukje script dat daar voor zou moeten zorgen:
<?php
$ip = $_SERVER['REMOTE_ADDR'];
$query = "UPDATE 'gebruikers' SET ('".$ip."') WHERE 'ip'";
$result = mysql_query($query)
or die ("kon de query niet uitvoeren");
$rij = mysql_fetch_object($ip);
$dbip = htmlspecialchars($rij->ip)
?>
Maar het enige wat ik te zien krijg is de foutmelding:
kon de query niet uitvoeren.
En ik kan de fout niet vinden waardoor hij hem niet uitvoert.
Misschien dat 1 van jullie hem ziet?
Een kolomnaam is geen string en zet je dus niet tussen quotes '. Dat doe je 2x fout.
WHERE ip zonder een vergelijking slaat nergens op, levert ook een fout op. De foutmelding slaat nergens op, daar ben je zelf ook al achter gekomen. Wat dacht je van mysql_error() ?
Edit: Waarom ga je $ip fetchen? Dat is geen resultset, daar valt dus niks aan te fetchen. Ik vermoed dat de error_reporting ook op een veel te laag niveau staat, hier hoor je een hele dikke error op te krijgen. Gebruik E_ALL en toon alles op je scherm.
<?php
$ip = $_SERVER['REMOTE_ADDR'];
$sql = "UPDATE gebruikers SET ip = '.$ip.' WHERE ip = '.$ip.'";
$query = mysql_query($sql)
or die("kon de query niet uitvoeren");
$rij = mysql_fetch_object($query);
$dbip = htmlspecialchars($rij->ip)
?>
Nu geeft hij geen error, ook wordt je netjes doorgestuurd naar de safety pagina maar updaten in de database doet hij ook niet.
Je hebt niet echt naar Frank geluisterd. Je kan niet fetchen op een update.
En wat heeft het voor nut om het ip dezelfde waarde te geven als de waarde waar je al op zoekt. Tevens is de query nog niet goed. Wat doen die punten daar? Of probeer je de $ip buiten de quotes te halen. Dat doe je zo:
<?php
$sql = "UPDATE gebruikers SET ip = '" . $ip . "' WHERE ........";
?>
Er valt natuurlijk ook niks te updaten... Waarom zou je 1 in 1 veranderen wanneer deze waarde al in de database staat? (aangenomen dat het ip-adres de waarde 1 heeft)
SET ip = '1' WHERE ip = '1';
Daarnaast controleer je nergens of mysql_affected_rows() een waarde groter dan 0 aangeeft, dus dat er X records zijn aangepast.
Het fetchen van een update gaat niet lukken in MySQL, een update geeft geen resultset retour. In PostgreSQL kan dat wel, sinds versie 8.2 kun je met RETURNING aan de slag. Maar goed, daar heb jij niks aan.
Jouw foutafhandeling is om te huilen, die zegt helemaal niks. Maar dat wist je al, dat is al eerder gezegd en je liep er zelf ook op stuk.