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

php set_long_data voert de blob data niet aan.

Pagina: 1
Acties:

  • BoringDay
  • Registratie: Maart 2009
  • Laatst online: 13-05 21:49
Beste mensen

Ik wil Base64 encoded data ($value) in een blob veld van een bestaande record toevoegen.
Het id klopt en de thumb-data is ook aanwezig, alleen voegt het geen enkele data toe.
PHP/MySQL ini bestanden op de server zijn allemaal goed ingesteld en de data is ook niet te groot.

Query in de console die door gegeven wordt, klopt bij mijn weten ook, eveneens getest met `` om de veldnamen maar helpt niet. UPDATE user_files SET thumb=? WHERE id=?

Iemand enig idee?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public function db_update_large_file($table,$field,$value,$idfield,$id) {

        $this->dbConnect();
        $query = "UPDATE ".$table." SET ".$field."=? WHERE ".$idfield."=?";

        error_log($query);
        error_log($id);

        $stmt  = $this->handler->prepare($query);
        $null  = NULL;

        $stmt->bind_param("bs", $null,$id);
        $stmt->send_long_data(0,$value);
        $stmt->execute();   
        $this->handler->close();    

}

  • bartbh
  • Registratie: Maart 2004
  • Niet online
niks

[ Voor 93% gewijzigd door bartbh op 19-06-2013 18:32 ]


  • Saven
  • Registratie: December 2006
  • Laatst online: 20:24

Saven

Administrator

wat als je wat test data wil senden (gewoon abcd ofzo), vult ie dan wel wat in?

  • BoringDay
  • Registratie: Maart 2009
  • Laatst online: 13-05 21:49
Saven schreef op woensdag 19 juni 2013 @ 21:41:
wat als je wat test data wil senden (gewoon abcd ofzo), vult ie dan wel wat in?
Ik heb verschillende testen gedaan, naast deze heb ik een module met zonder parameters voor uploaden.
Daar lukt het mij zonder probleem 20 afbeeldingen toe te zenden en komen dan ook in de database.

Met parameters gaat het hier juist mis als ik de blob-veld wil invullen.
Als ik het met een andere veld test dan update die netjes de record dat betekend dat de id correct is.

Het enige wat ik mij kan bedenken is dat het hier mis gaat:
PHP:
1
2
$stmt->bind_param("bi", $null,$id);
$stmt->send_long_data(0,$value);


Verder krijg ik geen foutmeldingen in de console en wordt de functie ook niet halverwege afgebroken.
De $value is mime-data/afbeelding Base64 encoded data, ook deze krijg ik netjes door in de functie.
In de documentatie staat ook niet vermeld dat het specifiek voor mysql driver is (overigens host ik het lokaal op een Mac met MAMP Pro).

Kan het misschien nog iets met collatie te maken hebben in phpMyAdmin, deze staat blanco?

[ Voor 6% gewijzigd door BoringDay op 19-06-2013 23:56 ]


  • phex
  • Registratie: Oktober 2002
  • Laatst online: 15-11 16:07
Ik kan er naast zitten maar een blob verwacht toch binaire data? En afaik is base64 ascii..

  • BoringDay
  • Registratie: Maart 2009
  • Laatst online: 13-05 21:49
phex schreef op vrijdag 21 juni 2013 @ 13:25:
Ik kan er naast zitten maar een blob verwacht toch binaire data? En afaik is base64 ascii..
Volgens mij kan een blob ook een lange lap tekst zijn of ander mime-data.
Als ik het met een niet parameterized query dan werkt het wel namelijk.
Ook heb ik het geprobeerd door eerst weer te decoden en dan weg te schrijven maar ook dat werkt niet.

Ik begin haast te twijfelen om het hele php gebeuren eruit te slopen en over te stappen op node.js.
Mits dat velen voordelen biedt zonder de irritaties van php.

  • Candanz
  • Registratie: Februari 2013
  • Laatst online: 19-08-2024

Candanz

Geflipt

Staat je table charset toevallig op UTF8?

  • BoringDay
  • Registratie: Maart 2009
  • Laatst online: 13-05 21:49
Candanz schreef op vrijdag 21 juni 2013 @ 13:52:
Staat je table charset toevallig op UTF8?
Nee dat heb ik gecheckt maar staat gewoon blanco.
Pagina: 1