Gå til innhold

Anbefalte innlegg

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
Videoannonse
Annonse

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

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

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

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

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 av drange_net
Lenke til kommentar

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

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

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...