« 1 2 »
Autor Zpráva
houbeless
Profil
Zdravim,
potřeboval bych poradit s tímto:
mám dotaz : SELECT id, date FROM table ORDER BY date DESC LIMIT 1,
kterým zjištuju, který datum je nejvyšší, tj. poslední - vypíše mi to jeden záznam.
pokud jich je hodně, bývá to číslo, které je podle mě v posledním uloženém záznamu..
Dostanu z toho id,date. A ted problém: když vypisuju i ID toho záznamu, to číslo se zhruba po 500
už vypisuje pouze jako 1.
Zkoušel jsem jestli problém neni v typu sloupce a tak jsem ho změnil z INT na BIGNT - nepomohlo.
Mohl by mi někdo poradit, kde asi tak bude problém, nenarazili jste na něco podobného, když je mnoho stejných záznamů??
Kcko
Profil
co Ti brani pridat dalsi sortovaci podminku?

date DESC , ID DESC
houbeless
Profil
o to vůbec nejde, jde o to vypsat SPRÁVNÉ číslo ID, odpovídající nej.datumu...
Kajman_
Profil *
pokud jich je hodně, bývá to číslo, které je podle mě v posledním uloženém záznamu

Jak jich může být hodně když máte limit 1?

jde o to vypsat SPRÁVNÉ číslo ID, odpovídající nej.datumu

A jste si opravdu jistý, že ta rada od Kcka není to pravé ořechové?
houbeless
Profil
Mě jde o to, proč se při určitém počtu stejných záznamů ve sloupci, vypisuje odpovídající obsah sloupce ve stejném řádku záznamu (pro představu) pouze do zhruba 500 přesně, tj. číslo co tam má být a po překročení této hranice (asi 512), vrací db pouze 1, a ne adekvátní číslo jako do 500 ??
houbeless
Profil
Mě jde o to, proč se při určitém počtu stejných záznamů ve sloupci, vypisuje odpovídající obsah sloupce ve stejném řádku záznamu (pro představu) pouze do zhruba 512 - přesně, tj. číslo co tam má být a po překročení této hranice (asi 512), vrací db pouze 1, a ne adekvátní číslo jako do 512 ??
Kajman_
Profil *
A jste si jistý, že je to chyba db, že nemáte chybu v aplikaci?
houbeless
Profil
no tak to já nevim na to se ptám:) ovšem takovýto dotaz se těžko zařazuje pre to nemusí být vyloženě php ani mysql...
houbeless
Profil
Dám sem skript, který to zpracovává:
$result = $db->sql_query("SELECT id, date FROM ".$tale." ORDER BY date DESC LIMIT 1"); (nebo LIMIT 0,1 - výjde to nastejno)
$drow = $db->sql_fetchrow($result);
$date = $drow['date'];
$id = $drow['id'];
echo ....
houbeless
Profil
Dám sem skript, který to zpracovává:
$result = $db->sql_query("SELECT id, date FROM ".$tale." ORDER BY date DESC LIMIT 1"); (nebo LIMIT 0,1 - výjde to nastejno)
$drow = $db->sql_fetchrow($result);
$date = $drow['date'];
$id = $drow['id'];
echo ....
djlj
Profil
sql_fetchrow
Nevrací to náhodou jen číselná pole?
houbeless
Profil
ano
djlj
Profil
Tak odkud se pak bere $drow['date'] a $drow['id']?
houbeless
Profil
a id a date je co? Nevim kam tim míříte - možná by stálo zato se rozepsat, díky
houbeless
Profil
jinak pokud dam fetch_array tak je výsledek stejný...
djlj
Profil
a id a date je co? Nevim kam tim míříte
Tak se podívej na ten kód, cos sem napsal.
houbeless
Profil
to byla řečnická otázka ;) k tomuto
Tak odkud se pak bere $drow['date'] a $drow['id']?

význam tohoto dotazu jsem nepochopil..
djlj
Profil
houbeless
Bylo to myšleno tak, že pokud to vrací číselné pole, tak $drow['date'] a $drow['id'] neexistuje.
houbeless
Profil
ok, stačí napsat..
Já jsem se objektu $db podíval na zoubek - on je využíván ve všech případech a funguje - a to proto, že je fetchrow je ve skutečnosti dotaz do db jako mysql_fetch_array . to jsem zapoměl uvést..
houbeless
Profil
ale ikdyž objekt db obejdu a budu se dotazovat přímo, tak problém trvá..
Kajman_
Profil *
Pokud je stejný výsledek i např. v phpmyadminovi, tak je asi chyba při ukládání.

V tom případě sem zkuste vypsat strukturu tabulky, část skriptu, co tam data ukládá... a pokud možno bez Vašeho objektu, kde chybu nalézt nemůžeme.
houbeless
Profil
část která čte:
$result = mysql_query("SELECT id, date FROM ".$table." ORDER BY date DESC LIMIT 1");
$row = mysql_fetch_array($result);
$id = intval($row['id']);
$date = $row['date'];

část která ukládá:
$fp = @fopen (CSVFILE,"r");
while ($list = @fgetcsv ($fp, 100000, ",")) {
$isin = $list[0];
$name = $list[1];
$name = iconv("CP1250", "ISO-8859-2", $namecp); // Convert charset
$bic = $list[2];
....
mysql_query("INSERT INTO ".$table." VALUES (NULL, '$isin', '$name', '$bic', ...)");

NULL jako přeskočení sloupce id - ten je key a auto_increment
Kajman_
Profil *
A výpis struktury tabulky?
houbeless
Profil
`id` int(12) NOT NULL auto_increment,
`isin` varchar(12) collate latin2_czech_cs NOT NULL,
`name` varchar(18) collate latin2_czech_cs NOT NULL,
`bic` varchar(8) collate latin2_czech_cs NOT NULL,
`date` date NOT NULL
PRIMARY KEY (`id`)
ENGINE=MyISAM DEFAULT CHARSET=latin2 COLLATE=latin2_czech_cs AUTO_INCREMENT=1 ;
houbeless
Profil
Nevíte? Zajímavej problém, že?
Mike8748
Profil
houbeless

>> pouze do zhruba 512 - přesně, tj. číslo co tam má být a po překročení této hranice (asi 512),
tak do kolika teda?

ukaz kod kterym to vypisujes, pripadne proste jak se dostavat s tomu "zhruba presnymu" cislo 512
houbeless
Profil
512 byl odhad, idicií asi spíš bude to, že tabulka se zaplní 1025 záznamy. Poslední číslo, které vrátí id je 564. Na kod se stačí podívat o 4 záznamy výše...
Kajman_
Profil *
zkuste

$isin=addslashes($isin);
...
mysql_query("INSERT INTO ".$table."(isin,name,bic,...) VALUES ('$isin', '$name', '$bic', ...)") or die(mysql_error());
houbeless
Profil
no ale teda isin, se při tom dotazu nijak neangažuje, na něho se neptám, a je lhostejné jestli v tom soupci vůbec nějaká data jsou..
houbeless
Profil
Ale otestoval jsem to a je to stejné id se vrací jako 1, zjistil jsem, že jde po překročení těch 564 (kdy to pak už vrací jen 1) vždy o poslední vložený záznam. Nemohlo by to být tím, že Id překročí 1000 resp. asi 1024..??
« 1 2 »

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0