Probleem met Php Sql

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Kevin Blokzijl

Kevin Blokzijl

07/06/2011 12:51:30
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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.";
    }
}
?>


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
 
PHP hulp

PHP hulp

26/04/2024 00:49:15
 
Kees Schepers

kees Schepers

07/06/2011 13:22:33
Quote Anchor link
De variable $klikje bestaat niet of is null. Bovendien is je SQL code inefficient en zeer onveilig.
 
Thomas van den Bulk

Thomas van den Bulk

07/06/2011 13:26:31
Quote Anchor link
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.
 
Ivo P

ivo P

07/06/2011 14:18:16
Quote Anchor link
UPDATE leden
SET punten = punten + 4,
verkocht = verkocht + 1,
kliks = kliks +1
WHERE iets.
 
Kevin Blokzijl

Kevin Blokzijl

07/06/2011 20:03:57
Quote Anchor link
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
 
- SanThe -

- SanThe -

07/06/2011 20:24:04
Quote Anchor link
Je weet dat date("H:i:s") geen datum is maar een tijd.
 
Kevin Blokzijl

Kevin Blokzijl

07/06/2011 20:24:39
Quote Anchor link
Ja maar er komt 3 in de tabel, hoe kan dat dan?
 
- Ariën  -
Beheerder

- Ariën -

07/06/2011 20:29:23
Quote Anchor link
Waarom gebruik je geen NOW() i.c.m. DATETIME
 
Kevin Blokzijl

Kevin Blokzijl

07/06/2011 20:30:12
Quote Anchor link
Ik vraag waarom er een 3 in de tabel komt door dit: date("H:i:s") in een Sql query te plaatsen.
 
- Ariën  -
Beheerder

- Ariën -

07/06/2011 20:40:33
Quote Anchor link
en als je dat echo-ed?
Laat eens wat relevante code zien?

ikzelf vind NOW() overigens een betere oplossing.
 
- SanThe -

- SanThe -

07/06/2011 20:43:18
Quote Anchor link
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.
 
Kevin Blokzijl

Kevin Blokzijl

07/06/2011 20:46:00
Quote Anchor link
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.
 
- Ariën  -
Beheerder

- Ariën -

07/06/2011 21:52:58
Quote Anchor link
Gebruik gewoon geen UNIXTIME maar gewoon DATETIME als type.
 
Kevin Blokzijl

Kevin Blokzijl

08/06/2011 13:07:30
Quote Anchor link
Ik snap niet, kun je dat eens in mijn Query toepassen?
 
Erik van de Locht

Erik van de Locht

08/06/2011 13:39:44
Quote Anchor link
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.
 
Kevin Blokzijl

Kevin Blokzijl

08/06/2011 14:43:45
Quote Anchor link
mysql_query("delete FROM kopers WHERE FROM_UNIXTIME(time,'%d') != FROM_UNIXTIME(unix_timestamp(),'%d')");

Hoe gaat dit dan met Datetime?
Gewijzigd op 08/06/2011 14:44:06 door Kevin Blokzijl
 
- Ariën  -
Beheerder

- Ariën -

08/06/2011 14:54:09
Quote Anchor link
Door je veld-type aan te passen naar DATETIME, en dan kan je voortaan bij INSERT's en UPDATE's NOW() gebruiken.
 
Ivo P

ivo P

08/06/2011 15:20:59
Quote Anchor link
en ook voor DELETE query's uiteraard.

Mogelijk wil je alles wissen wat van de datum < vandaag is?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
DELETE FROM kopers
WHERE datumtijdkolom < CURRENT_DATE
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.