Voor het eerst kom ik onderstaande error tegen:
Incorrect parameter count in the call to native function 'FROM_UNIXTIME'


Nu gebruik ik de query toch met enige regelmatig in een ander script dus vraag ik me af, hoe kan het dat het nu geblokkeerd wordt?


$tijd = (TIME() + 10800);
mysql_query("UPDATE `fabriek` SET `updatetime`=FROM_UNIXTIME($tijd) WHERE `id`='{$_POST['nummer']}'") or die(mysql_error());



NB:
Post nummer wordt uit een input -> radio gehaald, dus heeft in mijn ogen geen mysql_real_escape_string nodig.
Manuel Van den hoogaard op 14/08/2014 18:46:46

Post nummer wordt uit een input -> radio gehaald, dus heeft in mijn ogen geen mysql_real_escape_string nodig.

En dit is dus de reden waarom zoveel sites nog steeds zo lek als een mandje zijn: pure onwetenheid, of pure arrogantie van de bouwer.
Het zal een hacker worst wezen waar jij denkt dat het uit komt. Die kan er alsnog alles in stoppen wat hij wil.

Echo je volledige query string eens zoals die zou moeten worden uitgevoerd. Dan kan je zien wat de mysql server voor zijn kiezen krijgt.


$tijd = (TIME() + 10800);
mysql_query("UPDATE `fabriek` SET `updatetime`=FROM_UNIXTIME($tijd) WHERE `id`='{$_POST['nummer']}'") or die(mysql_error());


Dat is de volledige code die ik nu gebruik... met als resultaat:
Incorrect parameter count in the call to native function 'FROM_UNIXTIME'
Ja, dat wisten we al, maar daar vroeg ik dus niet om. Echo de query string zoals de mysql server hem voor zijn kiezen krijg. Precies de string die dus uitgevoerd gaan worden waar de waardes van de variabelen al ingeplakt zijn. Alleen dan kan je zien wat er echt uitgevoerd wordt.

Dit zou dus je code moeten zijn:

<?php
$tijd = (TIME() + 10800);
echo "UPDATE `fabriek` SET `updatetime`=FROM_UNIXTIME($tijd) WHERE `id`='{$_POST['nummer']}'";
//mysql_query("UPDATE `fabriek` SET `updatetime`=FROM_UNIXTIME($tijd) WHERE `id`='{$_POST['nummer']}'") or die(mysql_error()); 
?>

En plak dan hier wat je op je scherm krijgt.

P.S. en nog wel je beveiliging op orde brengen dus....
Eenvoudiger is direct in de query:

UPDATE fabriek SET update_time = NOW() + INTERVAL 3 HOUR ......

Dit is kort voor:

UPDATE fabriek SET update_time = DATE_ADD(NOW(), INTERVAL 3 HOUR) ......
Ohh wauw!, zo had ik hem nog niet eens bekeken. #faal
Dat pakt hij de tijdsberekening dus niet, ik snap al waar het probleem ligt.


Hier kan ik weer mee verder!, thnx
mysql rescap is inmiddels ook toegevoegd! :)

Reageren