Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

Update BLOB image

Pagina: 1
Acties:

Verwijderd

Topicstarter
Goedenavond alle,

Momenteel ben ik bezig met ht uploaden, verwijderen en het updaten van BLOB afbeeldingen. Het uploaden en het verwijderen is momenteel gelukt. Maar het is mij nog niet gelukt om BLOB afbeeldingen te updaten.

Ik gebruik de volgende query:
PHP:
1
mysql_query("UPDATE artikel SET id = '$id', titel = '$titel', tekst = '$tekst', afbeelding = '$afbeelding' WHERE id = '$id' ") or die (mysql_error());


Ik krijg verder geen errors te zien. Ik weet dat opslaan in de database van afbeeldingen niet gebruikelijk is. Maar ik zou toch graag willen weten wat ik verkeerd doe qua het updaten van deze BLOB types.

Dank alvast.

Edit: Inmiddels is het mij gelukt dit te updaten. Ik was de 'enctype' vergeten.

Ben ik verplicht een nieuwe afbeelding te uploaden? Of kan een BLOB image ook aanroepen door middel van een echo, waardoor hij standaard al als waarde aangegeven staat, zodat hij niet overschreven wordt door niks als het ware? Wanneer ik nu geen nieuwe afbeelding upload, maar gewoon de tekst verander en de waarde aanpas van de tekst, en het afbeelding/file veld leeg laat wordt het veld leeg gehaalt. Kan ik hier iets aan doen verder?

[ Voor 28% gewijzigd door Verwijderd op 21-05-2013 20:06 ]


  • Osiris
  • Registratie: Januari 2000
  • Niet online
Verwijderd schreef op dinsdag 21 mei 2013 @ 19:59:

Ben ik verplicht een nieuwe afbeelding te uploaden? Of kan een BLOB image ook aanroepen door middel van een echo, waardoor hij standaard al als waarde aangegeven staat, zodat hij niet overschreven wordt door niks als het ware? Wanneer ik nu geen nieuwe afbeelding upload, maar gewoon de tekst verander en de waarde aanpas van de tekst, en het afbeelding/file veld leeg laat wordt het veld leeg gehaalt. Kan ik hier iets aan doen verder?
Komt dat doordat je dan `afbeelding = ''` als 't ware in je query hebt staan of gebeurt het ook als je afbeelding überhaupt niet noemt in je query?

Verwijderd

Topicstarter
Dit is alleen wanneer ik hem noem in de query. Is er een manier om te vertellen dat wanneer er geen waarde gevonden is hij niks mag doen, niet schrijven of iets?

  • C0rnelis
  • Registratie: Juni 2010
  • Laatst online: 01-11 21:54
Verwijderd schreef op dinsdag 21 mei 2013 @ 19:59:
Goedenavond alle,

Ik gebruik de volgende query:
PHP:
1
mysql_query("UPDATE artikel SET id = '$id', titel = '$titel', tekst = '$tekst', afbeelding = '$afbeelding' WHERE id = '$id' ") or die (mysql_error());


Ben ik verplicht een nieuwe afbeelding te uploaden? Of kan een BLOB image ook aanroepen door middel van een echo, waardoor hij standaard al als waarde aangegeven staat, zodat hij niet overschreven wordt door niks als het ware? Wanneer ik nu geen nieuwe afbeelding upload, maar gewoon de tekst verander en de waarde aanpas van de tekst, en het afbeelding/file veld leeg laat wordt het veld leeg gehaalt. Kan ik hier iets aan doen verder?
Door die alleen in je query mee te nemen als je een afbeelding upload en anders overslaat.

Ik hoop niet dat je $id, $titel, $tekst 1 op 1 overneemt uit $_POST?

Verwijderd

Topicstarter
Hoe bedoel je dat? 'afbeelding' staat toch altijd in de query? Die neem je dan toch automatisch mee? Ik neem die inderdaad één voor één over vanuit een $_POST variable die ik aan heb gemaakt, die ik wel escape. Is dit een slechte manier qua coderen? Of gewoon veel tijd verspilling als je meerdere variable hebt?

[ Voor 21% gewijzigd door Verwijderd op 21-05-2013 20:22 ]


  • C0rnelis
  • Registratie: Juni 2010
  • Laatst online: 01-11 21:54
Verwijderd schreef op dinsdag 21 mei 2013 @ 20:21:
Hoe bedoel je dat? 'afbeelding' staat toch altijd in de query? Die neem je dan toch automatisch mee? Ik neem die inderdaad één voor één over vanuit een $_POST variable die ik aanmaak, die ik wel escape.
Jij moet het toevoegen van $afbeelding aan de query dus afhankelijk maken van het feit of je wel of niet een afbeelding upload.

Verwijderd

Topicstarter
Zou je mij hiermee wat opweg kunnen helpen? Ik snap de bedoeling wel, maar ik weet niet precies welke kant ik op moet.

  • C0rnelis
  • Registratie: Juni 2010
  • Laatst online: 01-11 21:54
Wat heb je al geprobeerd, naast bovenstaand getoonde code?

Verwijderd

Topicstarter
Ik denk dat ik hem ondertussen heb. Ik heb nu:

PHP:
1
2
3
4
5
if ($afbeelding == TRUE){
Voer query uit met afbeelding.
}else{
Voer query uit zonder afbeelding.
}


Het ziet er naar uit dat dit werkt, is dit ook de degelijke/goede manier?

  • Cartman!
  • Registratie: April 2000
  • Niet online
De mysql_*-functies zijn al depricated dus het is sowieso slim dat niet meer te gebruiken. Kijk eens naar PDO of mysqli_*-functies.

Wat is overigens de reden om blobs op te slaan in je database? Wellicht persoonlijke voorkeur maar ik maak altijd liever een verwijzing naar een bestand op het filesystem.

Verwijderd

Topicstarter
Dank voor de uitleg. Het was niet echt een voorkeur, gewoon iets uit de losse pols. Kan een dubbele mysql_* leiden tot beveiligins problemen? Of heeft dat hier weinig mee te maken? Ik ga even Google op jouw suggestie!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Verwijderd schreef op dinsdag 21 mei 2013 @ 20:41:
Ik denk dat ik hem ondertussen heb. Ik heb nu:

PHP:
1
if ($afbeelding == TRUE){


Het ziet er naar uit dat dit werkt, is dit ook de degelijke/goede manier?
alhoewel php het vast zal slikken zou ik dit niet doen. Het is afhankelijk van language quirks.

maak er dan iets van in de trant van : !isempty($afbeelding), strlen($afbeelding)>0, $afbeelding!=null, $afbeelding!=""

Dat checked beter op wat je wilt weten (of de $afbeelding leeg is of niet) ipv op language quirks vertrouwen dat alles wat niet nul is TRUE is.

  • C0rnelis
  • Registratie: Juni 2010
  • Laatst online: 01-11 21:54
Gomez12 schreef op dinsdag 21 mei 2013 @ 21:05:
[...]

alhoewel php het vast zal slikken zou ik dit niet doen. Het is afhankelijk van language quirks.

maak er dan iets van in de trant van : !isempty($afbeelding), strlen($afbeelding)>0, $afbeelding!=null, $afbeelding!=""

Dat checked beter op wat je wilt weten (of de $afbeelding leeg is of niet) ipv op language quirks vertrouwen dat alles wat niet nul is TRUE is.
Probleem is dat je niet weet hoe $afbeelding wordt gevuld. For all we know is het:
PHP:
1
$afbeelding = isset($_FILES['input_name']);  // pseudo 

of
PHP:
1
$afbeelding = $_FILES['input_name']['error'] === 0;  // pseudo 

[ Voor 6% gewijzigd door C0rnelis op 21-05-2013 21:12 ]


  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
C0rnelis schreef op dinsdag 21 mei 2013 @ 21:08:
[...]


Probleem is dat je niet weet hoe $afbeelding wordt gevuld. For all we know is het:
PHP:
1
$afbeelding = isset($_FILES['input_name']);  // pseudo 

of
PHP:
1
$afbeelding = $_FILES['input_name']['error'] === 0;  // pseudo 
Alhoewel je technisch correct bent, als de topicname is : update BLOB image en ik nergens in de rest van de query iets zou wat logischerwijs een image BLOB zou zijn, vermoed ik toch echt serieus dat $afbeelding de image BLOB bevat.

En dan vermoed ik dat je (naast de al genoemde afhankelijkheid van php-quirks) ook nog eens risico hebt op problemen (ik weet niet of het technisch toegestaan is), maar als je een imageblob hebt die bevat 0aaaaaaa dan vermoed ik dat php nog wel andere dingen kan gaan doen dan je verwacht.

Ik schat zomaar in (niet getest) dat via autoconversies de 0aaaaa naar een int 0 gaat die weer automagisch false is.
Pagina: 1