pgdx Skrevet 10. februar 2005 Del Skrevet 10. februar 2005 Nå har jeg prøvd med det meste, INT, VARCHAR, LONGTEXT, BIGINT og til og med BLOB. Rekken jeg skal lagre, kan minne om dette: 0010010000111100111111111101101111111111111001110110011000111100 Men ender tilslutt ut som noe ala dette (hentet fra BLOB-felt): 10010000111100111135186582344698695525721025058331278555742208.00 Hva skjer, og hvordan kan jeg lagre dette uten noen form for formatering? Lenke til kommentar
???????? Skrevet 10. februar 2005 Del Skrevet 10. februar 2005 Den vil ikke fungere i INT, siden den da vil fjerne 0'ene på starten. VARCHAR skal fungere fint. Vis meg SHOW CREATE TABLE på den tabellen du bruker. Lenke til kommentar
pgdx Skrevet 10. februar 2005 Forfatter Del Skrevet 10. februar 2005 Nå forandret jeg den til varchar: ALTER TABLE `bergenblink` CHANGE `data` `data` VARCHAR( 65 ) NOT NULL Og da ble stringen slik: 1.00100000100999995935004568641104723767757778906704830934286e+62 Jeg vet at det ikke er det jeg sprøyter inn, for jeg echoer den på siden, og da ser det slik ut: 0100100000101000000110000000100000011000001010000100100010001000 Lenke til kommentar
???????? Skrevet 10. februar 2005 Del Skrevet 10. februar 2005 (endret) Problemet ligger nok i koden din og ikke databaseformatet. Hvilket språk skriver du i? Endret 10. februar 2005 av ???????? Lenke til kommentar
pgdx Skrevet 10. februar 2005 Forfatter Del Skrevet 10. februar 2005 Skriver det i PHP. Kan ikke helt se at det skal være feil, heller. Først genererer jeg $bitpattern av flere biter satt sammen med .= Deretter echoer jeg det: echo "Dette blir skrevet til MySQL ($created): <br />" . $bitpattern; Deretter kobler jeg til databasen og skriver inn data og closer connection slik: $sql = 'INSERT INTO `bergenblink` ( `id` , `data` ) ' . ' VALUES ( \'\', ' . $bitpattern . ');' . ' '; mysql_query($sql) or die('Query failed: ' . mysql_error()); mysql_close($link); Lenke til kommentar
pgdx Skrevet 10. februar 2005 Forfatter Del Skrevet 10. februar 2005 Oppdatering: Jeg prøvde å skrive til databasen med varchar men uten å hente det fra en variabel, men ved bare å inpute selve strengen, og da virket det. INSERT INTO `bergenblink` ( `id` , `data` , `created` , `displayed` , `duration` , `times` , `author` , `comment` , `name` ) VALUES ( '', '0000000000000000001111000011110000111100001111000000000000000000', '1108070463', '0', '10', '0', 'Pål Drange', 'Tester bitstreng', 'Bittest' ); Tydeligvis går det skeis når den skal fyre inn variabelen $bitpattern i databasen... Noen erfaringer med dette, ??????????? ? Lenke til kommentar
???????? Skrevet 10. februar 2005 Del Skrevet 10. februar 2005 I utgangspunktet så skal det ikke være noen forskjell på å sette inn $var eller verdien til $var. Jeg ser at det blir en liten "feil" med tanke på at du setter inn 10101... inn i et VARCHAR felt - da vil MySQL konvertere dette til en string. Sett ' rundt $bitpattern. Hvis ikke det hjelper, kan du da kjøre SHOW CREATE TABLE bergenblink, og sjekke der at det ikke er noe rart der - eventuelt sjekke DESC bergenblink også. Lenke til kommentar
pgdx Skrevet 10. februar 2005 Forfatter Del Skrevet 10. februar 2005 (endret) Men da får jeg bare opp "$bitpattern" som vanlig tekst i det feltet. Uansett, som du ser i SQL-koden, så blir jo det riktig når jeg kjører mønsteret rett inn på den måten... CREATE TABLE `bergenblink` ( `id` int(32) NOT NULL auto_increment, `data` varchar(65) NOT NULL default '', `created` int(32) NOT NULL default '0', `displayed` int(32) NOT NULL default '0', `duration` int(32) NOT NULL default '0', `times` int(32) NOT NULL default '0', `author` varchar(100) NOT NULL default '', `comment` varchar(250) NOT NULL default '', `name` varchar(250) NOT NULL default '', PRIMARY KEY (`id`) ) TYPE=MyISAM PACK_KEYS=0 COMMENT='Tabell for lagring av bilder med tilhørende informasjon' Endret 10. februar 2005 av drange_net Lenke til kommentar
???????? Skrevet 11. februar 2005 Del Skrevet 11. februar 2005 Bruk \' ikke kun ' - du skal ha med ' tegnene, ikke gjøre variabelen til tekst. Lenke til kommentar
kaffenils Skrevet 11. februar 2005 Del Skrevet 11. februar 2005 Hvorfor lagrer du i det hele tatt binære data på denne måten? Det ta jo 8 ganger så mye plass som det burde gjort. Selv om du sikkert klarer å løse problemet du beskriver vil jeg anbefale å konvertere det til hex og lagre det i en kolonne av type binary (binary ble introdusert i MySQL 4.1.2). Du ser nok selv fordelen i å bruke 8 bytes for å lagre hexverdiene 24, 3C, FF, DB, FF, E7, 66, 3C, istedet for å bruke 64 bytes for å lagre strengen '0010010000111100111111111101101111111111111001110110011000111100' Lenke til kommentar
pgdx Skrevet 11. februar 2005 Forfatter Del Skrevet 11. februar 2005 Jeg kunne godt ha lagret det hexadesimalt, men da trenger jeg en kjapp og enkel måte i PHP å gjøre det om til hex på, og en enda kjappere måte i python å gjøre det om til binært igjen. Det er uansett snakk om kriminelt små datamengder, så jeg vurderte det slik at 64 vs 16 byte var noe jeg kunne unne meg... ????????: Når jeg legger det inn i \'$bitpattern\' , kommer $bitpattern som "$bitpattern" i databasen! Lenke til kommentar
kaffenils Skrevet 11. februar 2005 Del Skrevet 11. februar 2005 "Det er uansett snakk om kriminelt små datamengder, så jeg vurderte det slik at 64 vs 16 byte var noe jeg kunne unne meg... " Hvis det ikke er snakk om store mengder så er det jo greit. Dessuten er det 8 bytes i stedet for 64 bytes, ikke 16 istedet for 64. Lenke til kommentar
???????? Skrevet 11. februar 2005 Del Skrevet 11. februar 2005 (endret) $sql = "INSERT INTO bergenblink (`data`) VALUES ('$bitpattern')"; Edit: legg til echo $sql; også slik at du kan se hva spørringen inneholder. Endret 11. februar 2005 av ???????? Lenke til kommentar
pgdx Skrevet 11. februar 2005 Forfatter Del Skrevet 11. februar 2005 Hadde du kunne vært en engel å skrive det for meg? Jeg er litt treg, jeg... Her er koden min, litt stygg, det vet jeg: $sql = 'INSERT INTO `bergenblink` ( `id` , `data` , `created` , `displayed` , `duration` , `times` , `author` , `comment` , `name` ) ' . ' VALUES ( \'\', ' . $bitpattern . ', \'' . $created . ', \', \'0\', \'' . $duration . ', \', \'0\', \'' . $author . '\', \'' . $comment . '\', \'' . $name . '\' );' . ' '; Lenke til kommentar
kimla Skrevet 17. februar 2005 Del Skrevet 17. februar 2005 Legg til " istedenfor ' på begynnelsen og slutten. da skal det funke: $sql = "INSERT INTO bergenblink (id, data ) VALUES ( ' ', '$bitpattern')"; Det er hvertfall sånn jeg ville gjort det Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå