Autor | Zpráva | ||
---|---|---|---|
houbeless Profil |
#1 · Zasláno: 10. 12. 2007, 01:19:37
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 |
#2 · Zasláno: 10. 12. 2007, 01:34:49
co Ti brani pridat dalsi sortovaci podminku?
date DESC , ID DESC |
||
houbeless Profil |
#3 · Zasláno: 10. 12. 2007, 01:55:19
o to vůbec nejde, jde o to vypsat SPRÁVNÉ číslo ID, odpovídající nej.datumu...
|
||
Kajman_ Profil * |
#4 · Zasláno: 10. 12. 2007, 09:31:35
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 |
#5 · Zasláno: 10. 12. 2007, 13:04:32
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 |
#6 · Zasláno: 10. 12. 2007, 13:05:38
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 * |
#7 · Zasláno: 10. 12. 2007, 13:27:05
A jste si jistý, že je to chyba db, že nemáte chybu v aplikaci?
|
||
houbeless Profil |
#8 · Zasláno: 10. 12. 2007, 13:43:30
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 |
#9 · Zasláno: 10. 12. 2007, 14:17:39
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 |
#10 · Zasláno: 10. 12. 2007, 14:18:09
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 |
#11 · Zasláno: 10. 12. 2007, 14:44:30
sql_fetchrow
Nevrací to náhodou jen číselná pole? |
||
houbeless Profil |
#12 · Zasláno: 10. 12. 2007, 14:51:45
ano
|
||
djlj Profil |
#13 · Zasláno: 10. 12. 2007, 14:52:06
Tak odkud se pak bere $drow['date'] a $drow['id']?
|
||
houbeless Profil |
#14 · Zasláno: 10. 12. 2007, 15:04:06
a id a date je co? Nevim kam tim míříte - možná by stálo zato se rozepsat, díky
|
||
houbeless Profil |
#15 · Zasláno: 10. 12. 2007, 15:08:59
jinak pokud dam fetch_array tak je výsledek stejný...
|
||
djlj Profil |
#16 · Zasláno: 10. 12. 2007, 15:11:22
a id a date je co? Nevim kam tim míříte
Tak se podívej na ten kód, cos sem napsal. |
||
houbeless Profil |
#17 · Zasláno: 10. 12. 2007, 15:15:52
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 |
#18 · Zasláno: 10. 12. 2007, 15:17:56
houbeless
Bylo to myšleno tak, že pokud to vrací číselné pole, tak $drow['date'] a $drow['id'] neexistuje. |
||
houbeless Profil |
#19 · Zasláno: 10. 12. 2007, 15:27:18
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 |
#20 · Zasláno: 10. 12. 2007, 15:31:00
ale ikdyž objekt db obejdu a budu se dotazovat přímo, tak problém trvá..
|
||
Kajman_ Profil * |
#21 · Zasláno: 10. 12. 2007, 15:36:57
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 |
#22 · Zasláno: 10. 12. 2007, 21:43:58
čá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 * |
#23 · Zasláno: 10. 12. 2007, 22:03:11
A výpis struktury tabulky?
|
||
houbeless Profil |
#24 · Zasláno: 10. 12. 2007, 23:09:16
`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 |
#25 · Zasláno: 11. 12. 2007, 11:26:56
Nevíte? Zajímavej problém, že?
|
||
Mike8748 Profil |
#26 · Zasláno: 11. 12. 2007, 12:41:54
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 |
#27 · Zasláno: 11. 12. 2007, 13:15:38
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 |
#29 · Zasláno: 11. 12. 2007, 22:49:45
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 |
#30 · Zasláno: 11. 12. 2007, 23:26:10
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..??
|
||
Téma pokračuje na další straně.
|
0