Probleem met Php Sql
Hallo,
ik ben bezig met een kliklink script, die heb ik uit een open source iets gehaald.
maar nu stuit ik op het volgende probleem:
Hij geeft telkens aan 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=1' at line 1.
Hoe kan ik dit verhelpen?
Mvg
ik ben bezig met een kliklink script, die heb ik uit een open source iets gehaald.
maar nu stuit ik op het volgende probleem:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$result = mysql_query("select * from leden where id=$_GET[id]") or die(mysql_error());
if ($row = mysql_fetch_array($result)) {
mysql_query("UPDATE leden SET punten=punten+$klikje WHERE id=$_GET[id]") or die(mysql_error());
mysql_query("UPDATE leden SET verkocht=verkocht+1 WHERE id=$_GET[id]") or die(mysql_error());
mysql_query("UPDATE stats SET kliks=kliks+1") or die(mysql_error());
mysql_query("UPDATE stats SET punten=punten+$klikje") or die(mysql_error());
mysql_query("UPDATE `stats` SET punten=punten+'$klikje'");
mysql_query("INSERT INTO kopers (ip, time, verkoperid, url) VALUES ('$_SERVER[REMOTE_ADDR]', UNIX_TIMESTAMP(), $_GET[id], '$HTTP_REFERER')");
echo "Je hebt zojuist 1 punt gegeven aan de gebruiker met ID: $_GET[id]";
} else {
echo "Punten konden niet worden gegeven.";
}
} ?>
$result = mysql_query("select * from leden where id=$_GET[id]") or die(mysql_error());
if ($row = mysql_fetch_array($result)) {
mysql_query("UPDATE leden SET punten=punten+$klikje WHERE id=$_GET[id]") or die(mysql_error());
mysql_query("UPDATE leden SET verkocht=verkocht+1 WHERE id=$_GET[id]") or die(mysql_error());
mysql_query("UPDATE stats SET kliks=kliks+1") or die(mysql_error());
mysql_query("UPDATE stats SET punten=punten+$klikje") or die(mysql_error());
mysql_query("UPDATE `stats` SET punten=punten+'$klikje'");
mysql_query("INSERT INTO kopers (ip, time, verkoperid, url) VALUES ('$_SERVER[REMOTE_ADDR]', UNIX_TIMESTAMP(), $_GET[id], '$HTTP_REFERER')");
echo "Je hebt zojuist 1 punt gegeven aan de gebruiker met ID: $_GET[id]";
} else {
echo "Punten konden niet worden gegeven.";
}
} ?>
Hij geeft telkens aan 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=1' at line 1.
Hoe kan ik dit verhelpen?
Mvg
De variable $klikje bestaat niet of is null. Bovendien is je SQL code inefficient en zeer onveilig.
kijk eerst even naar mysql_real_escape_string() en naar hoe je meerdere updates tegelijkertijd kan invoeren, nu heb je meerdere query's die je net zo goed in 1 keer had kunnen doen.
UPDATE leden
SET punten = punten + 4,
verkocht = verkocht + 1,
kliks = kliks +1
WHERE iets.
SET punten = punten + 4,
verkocht = verkocht + 1,
kliks = kliks +1
WHERE iets.
Ik heb hem nu tot zover werken.
Alleen de Datum wordt in de tabel gezet met: '".date("H:i:s")."'
Alleen nu zie ik in de kolom staan, 3 wat eigenlijk 1307498760 moet zijn.
Hoe kan dat?
Mvg
Alleen de Datum wordt in de tabel gezet met: '".date("H:i:s")."'
Alleen nu zie ik in de kolom staan, 3 wat eigenlijk 1307498760 moet zijn.
Hoe kan dat?
Mvg
Je weet dat date("H:i:s") geen datum is maar een tijd.
Ja maar er komt 3 in de tabel, hoe kan dat dan?
Waarom gebruik je geen NOW() i.c.m. DATETIME
Ik vraag waarom er een 3 in de tabel komt door dit: date("H:i:s") in een Sql query te plaatsen.
en als je dat echo-ed?
Laat eens wat relevante code zien?
ikzelf vind NOW() overigens een betere oplossing.
Laat eens wat relevante code zien?
ikzelf vind NOW() overigens een betere oplossing.
Kevin Blokzijl op 07/06/2011 20:24:39:
Ja maar er komt 3 in de tabel, hoe kan dat dan?
Omdat er geen datum bij zit wordt er waarschijnlijk automatisch 1-1-1970 gepakt en gaat het dus fout.
echo: 03:57:49
Toevoeging op 07/06/2011 20:52:43:
ik kan NOW() niet gebruiken omdat:
mysql_query("delete FROM kopers WHERE FROM_UNIXTIME(time,'%d') != FROM_UNIXTIME(unix_timestamp(),'%d')");
Er staat, en ik zou niet weten hoe ik dat anders doe.
Toevoeging op 07/06/2011 20:52:43:
ik kan NOW() niet gebruiken omdat:
mysql_query("delete FROM kopers WHERE FROM_UNIXTIME(time,'%d') != FROM_UNIXTIME(unix_timestamp(),'%d')");
Er staat, en ik zou niet weten hoe ik dat anders doe.
Gebruik gewoon geen UNIXTIME maar gewoon DATETIME als type.
Ik snap niet, kun je dat eens in mijn Query toepassen?
Je gebruikt nu een timestamp in je database. Wat Aar bedoelt is dat je het type van dat veld veranderd naar een DATETIME veld. Dan kun je de huidige datum er met NOW() in zetten en kun je met SQL berekeningen uitvoeren met datums.
mysql_query("delete FROM kopers WHERE FROM_UNIXTIME(time,'%d') != FROM_UNIXTIME(unix_timestamp(),'%d')");
Hoe gaat dit dan met Datetime?
Hoe gaat dit dan met Datetime?
Gewijzigd op 08/06/2011 14:44:06 door Kevin Blokzijl
Door je veld-type aan te passen naar DATETIME, en dan kan je voortaan bij INSERT's en UPDATE's NOW() gebruiken.
en ook voor DELETE query's uiteraard.
Mogelijk wil je alles wissen wat van de datum < vandaag is?
Mogelijk wil je alles wissen wat van de datum < vandaag is?




