Avatar
solta
Člen
Avatar
solta:

Ahoj

snažím se udělat kopii řídku z db už jsem nad tím strávil spoustu času a nic jsem nevymyslel.
U druhého řádku

DB::dbQuery("INSERT INTO `tmp` SELECT * FROM `document` WHERE `IDdocument` = ? AND `companyID` = ?", array(1,1));

to vypíše tuto chybu

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error' in

prosím tedy o nakopnutí mé prdele tím správným směrem :D

public static function dbQuery($sql, $parameters = Array()) {
        $return = self::$connection->prepare($sql);
        $return -> execute($parameters);
        if(count($parameters)>0)
                return $return->fetch();
        else return 0;
}

DB::dbQuery("CREATE TEMPORARY TABLE `tmp` LIKE `document`", array());
DB::dbQuery("INSERT INTO `tmp` SELECT * FROM `document` WHERE `IDdocument` = ? AND `companyID` = ?", array(1,1));
DB::dbQuery("ALTER TABLE `tmp` drop `IDdocument`", array());

DB::dbQuery("UPDATE `tmp` SET `parentID` = ? ,`documentTypeID` = ?", array(1, 5);
DB::dbQuery("INSERT INTO `document` SELECT 0,tmp.* FROM tmp", array());
DB::dbQuery("DROP TABLE `tmp`", array());
Editováno 16.1.2014 2:17
 
Odpovědět 16.1.2014 2:15
Avatar
Kit
Redaktor
Avatar
Odpovídá na solta
Kit:

Uniká mi, proč se program jmenuje $return...

Bohužel jsi podstatnou část chybové hlášky usekl, ale stejně to celé vypadá velmi prapodivně. Máš nějaký speciální důvod, proč vytvářet dočasnou tabulku a pak ji přidávat do původní tabulky?

Nahoru Odpovědět 16.1.2014 9:50
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
solta
Člen
Avatar
Odpovídá na Kit
solta:

jmenuje se to return protože to ve výslednku potřebuji k vrácení hodnoty z funkce asi do není idealní název ale takový byl zrovna můj myšlenkový pochod

důvod proč jsem zvolil tento postup byl ten že jsem si myslel že si to zjednoduším kdybych to po deseti minutach vzdal a u udělal to normálně tedy vytáhnul data z db upravil a zase uložil bylo by po problému. Jemonže to už mi nedalo zjistit proč to nefunguje

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error' in /mnt/public_html/ne­w/models/DB.php:44
Stack trace:
#0 /mnt/public_html/ne­w/models/DB.php(44): PDOStatement->fetch()

v chybové hlášce už pak nebylo nic zajímavého

problém je v te funkci fetch()když ji odtranim tak to funguje

 
Nahoru Odpovědět 16.1.2014 13:25
Avatar
Kit
Redaktor
Avatar
Odpovídá na solta
Kit:

V proměnné $return se nachází program pro manipulaci s databází. Je obvyklé, pokud se ta proměnná jmenuje $select, $insert, $delete, $update - podle toho, co s databází dělá. Nebo jen prostě $prep, $prepared, $query apod.

Chyba je v testu count($parameters)>0, se kterým fetch() opravdu nesouvisí.

Tyhle statické třídy jsou jen pro zlost. Blbě se v nich hledají chyby.

Nahoru Odpovědět 16.1.2014 13:38
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
solta
Člen
Avatar
Odpovídá na Kit
solta:

díky ted jsem trochu zaneprádněn marknu na to později

 
Nahoru Odpovědět 20.1.2014 14:41
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.