Ga naar inhoud

[php/mssql] image in database zetten en ophalen


Aanbevolen berichten

hoi ik probeer een soort van artikelen database te maken waar je plaatjes bij kan zetten. die plaatjes komen dan ook in de db te staan (mssql 2000). waar het eigenlijk om gaat is die plaatjes. ik heb een tabel aangemaakt met een code (int) en img (image) en filetype(varchar). spreekt wel voor zich denk ik. het probleem zit m in het in de database zetten. ik heb de volgende code: [code:1:fb3e3e631d] <?php $codes = array_keys($_FILES); for($i=0;$i<count($codes);$i++){ $codes1 = $codes[$i]; // codes1 is bv img1, komt bij het formulier vandaan if($_FILES[$codes1]['tmp_name'] != ""){ // checken of er files zijn om te uploaden $filenametmp[$codes1] = $_FILES[$codes1]['tmp_name']; $handle[$codes1] = fopen($filenametmp[$codes1], 'r'); $inhoud[$codes1] = fread($handle[$codes1],filesize($filenametmp[$codes1])); $encoded[$codes1] = chunk_split(base64_encode($inhoud[$codes1])); $filetype[$codes1] = $_FILES[$codes1]['type']; $id = substr($codes1,3); $sql = "INSERT INTO images (code, img, filetype) values ($id, '".$encoded[$codes1]."', '".$filetype[$codes1]."');"; mssql_query($sql); ?> [/code:1:fb3e3e631d] hierbij krijg ik de volgende foutmelding: Warning: mssql_query(): message: Operand type clash: text is incompatible with image (severity 16) in c:\server\server f\webserver\nieuw\content\hulpenuitleg\index.php on line 176 dat is dus die laatste sql query. de fileupload werkt volgens mij wel. ik snap alleen niet wat er fout gaat bij het verwerken van het bestand. heeft iemand dit al eerder gehad of misschien een idee hoe het op te lossen?
Link naar reactie
na veel zoeken heb ik het antwoord gevonden. de truc zat m in dat mssql dus alleen hexadecimaal aan kan in een image veld in een tabel. vandaar de volgende code: [code:1:f356be0eb4] $inhoud[$codes1] = fread($handle[$codes1],filesize($filenametmp[$codes1])); $filetype[$codes1] = $_FILES[$codes1]['type']; // $data = unpack("H*hex", $inhoud[$codes1]); // $id = substr($codes1,3); $sql = "INSERT INTO images (code, img, filetype) values ('$id', 0x".$data['hex'].", '".$filetype[$codes1]."');"; mssql_query($sql); [/code:1:f356be0eb4] Dus dat was het. als je het plaatje vervolgens weer uit de tabel wil halen doe je dat zo: [code:1:f356be0eb4] $img = $_GET['img']; $result = mssql_query("SELECT * FROM images WHERE code=".$img.""); while ($row = mssql_fetch_array($result)) { $imgid = $row["code"]; $type = $row['filetype']; $encodeddata = $row["img"]; } header('Content-Type: $type'); echo $encodeddata; [/code:1:f356be0eb4] misschien dat je er wat aan hebt.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...