Welkom, Gast. Je bent niet ingelogd.

mysql fout, online check

Badeendje
Pompehdompehdom
moderator
Geplaatst op: 18 Jan 2007, 00:38
PimpCoins: 0
💸+
Bewerken Quote

heey,

ik ben bezig aan een systeem waardoor je kan zien waar wie online is, maar wanneer je naar een andere pagina gaat of de pagina ververst , dan krijg ik telkens de melding:

1
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 '' WHERE `id` = '7' LIMIT 1' at line 1

dit is dan de code die checkt waar wie online is:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
$ip = $_SERVER['REMOTE_ADDR'];
$pagina = addslashes($_SERVER['REQUEST_URI']);
$resultaat = mysql_query("SELECT `id` FROM `online` WHERE `ip` = '".$ip."' LIMIT 1") or die("Mysql fout: ".mysql_error());
if (mysql_num_rows($resultaat) != 1)
{
mysql_query("INSERT INTO `online` (ip, datum, page, user) VALUES ('".$ip."', NOW(), '".$pagina."', '')") or die("Mysql fout: ".mysql_error());
} else {
$gegevens = mysql_fetch_object($resultaat);
mysql_query("UPDATE `online` SET `ip` = '".$ip."', `datum` = NOW(), `page` = '".$pagina."', ' WHERE `id` = '".$gegevens->id."' LIMIT 1") or die("Mysql fout: ".mysql_error());
}
?>

en mijn fout zit dan onderaan(regel 10) bij het updaten van de tabel volgensmij, maar wat moet ik dan wijzigen om het gewoon goed te laten werken?

Lennard
?
Geplaatst op: 18 Jan 2007, 07:14
PimpCoins: 0
💸+
Bewerken Quote

Laat je query eens zien (zoals hij door mysql_query() wordt uitgevoerd)?

iisys
Hmhm, indeed. whtvr.
moderator
Geplaatst op: 18 Jan 2007, 07:21
PimpCoins: 0
💸+
Bewerken Quote

Ik neem aan dat het veld `id` een int is? Dan moet je de waarde niet tussen quotes (') zetten. Net zoals je met `datum` en NOW() hebt gedaan eigenlijk.

Dan wordt regel 10 dus:

1
2
3
<?php
mysql_query("UPDATE `online` SET `ip` = '".$ip."', `datum` = NOW(), `page` = '".$pagina."', ' WHERE `id` = ".$gegevens->id." LIMIT 1") or die("Mysql fout: ".mysql_error());
?>

Badeendje
Pompehdompehdom
moderator
Geplaatst op: 18 Jan 2007, 09:27
PimpCoins: 0
💸+
Bewerken Quote

dit is dan die sql suerry van me:

1
2
3
4
5
6
7
8
9
CREATE TABLE `online` (
  `id` int(11) NOT NULL auto_increment,
  `datum` varchar(18) NOT NULL default '',
  `last` varchar(18) NOT NULL default '',
  `page` varchar(200) NOT NULL default '',
  `user` int(11) NOT NULL default '0',
  `ip` varchar(100) NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;

maar ook al met de verbetering van iisys, dan nog krijg ik telkens een die mysql error
de eerste keer werkt dan alles, maar wanneer je de pagina ververst, dan doet die weer heeelemaal niks

[Laatst bewerkt door Badeendje op donderdag 18 januari 2007, om 09:43]
AfcAjax
Geplaatst op: 18 Jan 2007, 17:05
PimpCoins: 0
💸+
Bewerken Quote

1
2
mysql_query("UPDATE online SET ip='".$ip."', datum=NOW(), page='".$pagina."'  WHERE id='".$gegevens->id."' LIMIT 1")
or die("Mysql fout: ".mysql_error());
?

Badeendje
Pompehdompehdom
moderator
Geplaatst op: 18 Jan 2007, 17:39
PimpCoins: 0
💸+
Bewerken Quote

oke het is fefixt
regel 10 moest gewijzigd worden naar dit:

1
2
3
<?php
mysql_query("UPDATE online SET ip='".$ip."', datum=NOW(), page='".$pagina."'  WHERE id='".$gegevens->id."' LIMIT 1");
?>

en nu werkt het

[Laatst bewerkt door Badeendje op donderdag 18 januari 2007, om 17:39]
iisys
Hmhm, indeed. whtvr.
moderator
Geplaatst op: 18 Jan 2007, 17:55
PimpCoins: 0
💸+
Bewerken Quote

Badeendje schreef:

oke het is fefixt
regel 10 moest gewijzigd worden naar dit:
[...]

en nu werkt het


Aah nu zie ik waar t aan ligt.
Je had na je opsomming van updates nog een , ' geplaatst, waardoor SQL de rest verkeerd interpreteerde.

Zo is het trouwens netter:

1
2
3
<?php 
mysql_query("UPDATE `online` SET `ip` = '".$ip."', `datum` = NOW(), `page` = '".$pagina."' WHERE `id` = ".$gegevens->id." LIMIT 1") or die("Mysql fout: ".mysql_error()); 
?>

📫

Nieuw privébericht

🔥

Registreren


Login