Autor Zpráva
krteczek
Profil
co je špatně na následujícím dotazu?

$dotaz = "UPDATE `" . T_USERI . "`
SET `aktivny` = 1, `kontrol` = NULL
WHERE MD5(SHA1(MD5(SHA1(`id`)))) = " . $dbs->O($_GET['dokonceniRegistrace']) . "
AND `kontrol` IS NOT NULL
AND `kontrol` = " . $dbs->O($_GET['code']) . " LIMIT 1";

na dvou serverech mi funguje spolehlivě a na třetím se update neprovede, data jsou generovaná stejnými scripty, tabulky jsou stejné, podle hostingu je na funkčním serveru mysql 4.1.18, na lokale je 5.0.38 a na serveru kde mi to nefunguje je a tam kde mi to nejede je 5.0.45 (pokud mluvi pravdu myadmin...)
bukaj
Profil
A co píše MySQL za chybu? Popř. jak vypadá výsledek v proměnné $dotaz?

PS. MD5(SHA1(MD5(SHA1(`id`)))) - docela dobrá zběsilost :)
Kajman_
Profil *
A verzi zjistíte
select version()
krteczek
Profil
bukaj: dotaz vrátí 1 (myslím že true => jako že nedošlo k chybě), ale mysql_affected_rows() vrátí 0 a data v databázi změněna nejsou.
Tam kde to funguje mi vrátí true a 1...

hm když nad tim přemýšlím tak asi zrušim tu šilenou kostrukci...
djlj
Profil
krteczek
On to myslel tak, co máš v té proměnné $dotaz. Tedy jak vypadá ten dotaz s doplněnými proměnnými.
krteczek
Profil
toto:
UPDATE `reality_useri` 

SET `aktivny` = 1, `kontrol` = NULL
WHERE MD5(SHA1(MD5(SHA1(`id`)))) = '980eec414c4c0cc9f0cab19c53268071'
AND `kontrol` IS NOT NULL
AND `kontrol` = 'FVoQ49HtVCnfKvwZwnU6HhJngSKaDd9jRTDck3tB5dmVvvuYDwB8VnVcmCbxmoxZUgMUv j7'
LIMIT 1
krteczek
Profil
tak už jsem dotaz upravil aby jel bez md5 a sha1 funkci (a i ostatni vkladaci dotazy, ale stále je výsledek dotaz neproveden pro neexistující položku


UPDATE `reality_useri` 

SET `aktivny` = 1, `kontrol` = NULL
WHERE `id` = 367
AND `kontrol` = 'QgCqXbdYkYDQyoitHCZRqp7sKWrfjYnGcGHLYRQVLCz9aMhTfvL9Cvqmo44u7N24U2bXn pQ'
LIMIT 1
krteczek
Profil
a tabulka vypadá takhle

CREATE TABLE `reality_useri` (

`id` int(11) NOT NULL auto_increment,
`jmeno` varchar(100) collate utf8_slovak_ci NOT NULL,
`adresa` varchar(255) collate utf8_slovak_ci NOT NULL,
`login` varchar(100) collate utf8_slovak_ci NOT NULL,
`heslo` varchar(100) collate utf8_slovak_ci NOT NULL,
`hash` varchar(32) collate utf8_slovak_ci NOT NULL,
`email` varchar(100) collate utf8_slovak_ci NOT NULL,
`datum` datetime NOT NULL default '0000-00-00 00:00:00',
`aktivny` tinyint(4) NOT NULL default '0',
`jeadmin` tinyint(4) NOT NULL default '0',
`lock` tinyint(1) NOT NULL default '0',
`kontrol` varchar(72) character set utf8 collate utf8_bin default NULL,
`zadostHeslo` tinyint(1) NOT NULL,
`noveHeslo` varchar(100) character set utf8 collate utf8_bin default NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `prihlasovacie_meno` (`login`),
UNIQUE KEY `email` (`email`)
) ENGINE=MyISAM AUTO_INCREMENT=368 DEFAULT CHARSET=utf8 COLLATE=utf8_slovak_ci AUTO_INCREMENT=368 ;

INSERT INTO `reality_useri` VALUES (367, 'krteczek', '', 'krteczek', 'krteczek', '9870d3226b0e3b9def0d678c4bc99781', 'krteczek01@seznam.cz', '2007-08-12 21:28:11', 0, 0, 0, 0x51674371586264596b594451796f697448435a52717037734b5772666a596e476347 484c595251564c437a39614d685466764c394376716d6f343475374e3234553262586e 70514a, 0, NULL);
Alphard
Profil
btw s jakým hostigem je problém, není to náhodou profitux?
djlj
Profil
A když dáš místo UPDATu SELECT s tím stejným WHERE, tak ti to vybere jeden sloupec?
krteczek
Profil
SELECT * FROM `reality_useri` WHERE `id` = 367 AND `kontrol` = 'QgCqXbdYkYDQyoitHCZRqp7sKWrfjYnGcGHLYRQVLCz9aMhTfvL9Cvqmo44u7N24U2bXn pQ' LIMIT 1

porovnávání jsem změnil z utf_bin na utf_slovak_ci a stále to same
jedná se o superwebhosting.sk
krteczek
Profil
ještě mne napadlo že by ten řetězec na porovnání byl příliš dlouhý?
krteczek
Profil
Tak asi jsem záhadu vyřešil,
mailovaci funkce mi ukousla posledni znak a ja si toho nevšiml :-(
Toto téma je uzamčeno. Odpověď nelze zaslat.