Stránka 1 z 1

Fatal Error ve třídě PDO

Napsal: 28 zář 2011 00:11
od myiyk
Ahoj, tenhle kód mi hází chybu
Fatal error: Cannot pass parameter 2 by reference
na současném řádku 6

Kód: Vybrat vše

$sql='INSERT INTO building_stavebni_list
VALUES ( :stv_id , :stv_lvl , :stv_nlvl , :st_time , :en_time )';
$sth = $system_db->prepare($sql);
$sth->bindParam(1, $row['ID'], PDO::PARAM_INT, 11);
$sth->bindParam(2, $row['lvl'], PDO::PARAM_INT, 10);
$sth->bindParam(3, ((int)$row['lvl']+1), PDO::PARAM_INT, 11); // problémový řádek
$sth->bindParam(4, mktime(), PDO::PARAM_INT, 11);
$sth->bindParam(5, mktime()+$row['time'], PDO::PARAM_INT, 11);
$sth->execute();

/* pro info
$row = array(4) { ["ID"]=> string(1) "1" ["lvl"]=> string(1) "2" ["time"]=> string(3) "180" ["gol"]=> string(2) "75" }
*/


Netušíte, co tam je špatně ?

Re: Fatal Error ve třídě PDO

Napsal: 28 zář 2011 01:04
od CZechBoY
zkus tento kod píše:$sql='INSERT INTO building_stavebni_list
VALUES ( :stv_id , :stv_lvl , :stv_nlvl , :st_time , :en_time )';
$sth = $system_db->prepare($sql);
$sth->bindParam(":stv_id", $row['ID'], PDO::PARAM_INT, 11);
$sth->bindParam(":stv_lvl", $row['lvl'], PDO::PARAM_INT, 10);
$sth->bindParam(":stv_nlvl", ((int)$row['lvl']+1), PDO::PARAM_INT, 11); // problémový řádek
$sth->bindParam(":st_time", mktime(), PDO::PARAM_INT, 11);
$sth->bindParam(":en_time", mktime()+$row['time'], PDO::PARAM_INT, 11);
$sth->execute();

/* pro info
$row = array(4) { ["ID"]=> string(1) "1" ["lvl"]=> string(1) "2" ["time"]=> string(3) "180" ["gol"]=> string(2) "75" }
*/

Re: Fatal Error ve třídě PDO  Vyřešeno

Napsal: 28 zář 2011 09:39
od myiyk
stejně to nefunguje

--- Doplnění předchozího příspěvku (28 Zář 2011 10:45) ---

Vyřešil jsem to, vyměnil jsem bindParam za bindValue a trochu upravil sql, ale přesto netuším v čem byla chyba.
Aktuální funkčí kód:

Kód: Vybrat vše

$sql='INSERT INTO building_stavebni_list (building_id, this_level, next_level, start_time, end_time)
VALUES ( :stv_id , :stv_lvl , :stv_nlvl , :st_time , :en_time )';
$sth = $system_db->prepare($sql);
$sth->bindValue(":stv_id", $row['ID'], PDO::PARAM_INT);
$sth->bindValue(":stv_lvl", $row['lvl'], PDO::PARAM_INT);
$sth->bindValue(":stv_nlvl", $row['lvl']+1, PDO::PARAM_INT); // už funkční řádek
$sth->bindValue(":st_time", mktime(), PDO::PARAM_INT);
$sth->bindValue(":en_time", mktime()+$row['time'], PDO::PARAM_INT);
$sth->execute();