phpbar.de logo

Mailinglisten-Archive

[php] mysql - binaerdaten schreiben lesen schreiben

[php] mysql - binaerdaten schreiben lesen schreiben

LSB lsblsb at gmx.de
Don Nov 20 21:50:47 CET 2008


Yannik Hampe schrieb:
> Hans Egg wrote:
>   
>> Hallo Lars
>>
>> LB BL schrieb
>>
>>     
>>> folgende funktionen werden dabei durchlaufen bevor die
>>> bilddaten (hier: $value) in den sql befehl eingebaut werden:
>>>
>>> $value = trim($value);
>>> if (get_magic_quotes_gpc())
>>>   $value = stripslashes($value);
>>> $value = mysql_real_escape_string($value);
>>>       
>
> Und wo ist das INSERT, bzw. das UPDATE? Da solltest du noch mitposten...
>
> Außerdem habe ich es so verstanden, dass dein $value bereits aus der
> Datenbank kommt?! Dann müsstest du nicht auf magic_quotes_gpc testen,
> sondern auf get_magic_quotes_runtime().
>   
hi yannik,

also du hast das richtig verstanden. $value kommt aus der db. der 
code-ausschnitt bezieht is halt aus der standard-escape funktion die ich 
verwende.
magic_quotes_runtime ist in der php.ini auf off gestellt. daran dürfte 
es ja dann nicht liegen?

und es tritt nur beim zweiten einlesen derselben daten auf, also die 
daten die ausgelesen wurden in die klasse und dann zum 2. mal in die db 
geschrieben werden.
die applikation arbeitet in utf-8.

in $this->logo_normal und $this->logo_small liegen die daten die erst 
über einen select aus der db ausgelesen werden...
####
$sql = "SELECT * FROM {$this->t_company} a
            LEFT JOIN {$this->t_company_type} b ON a.company_type_id = 
b.company_type_id
            WHERE a.company_id = 
'{$this->dbManager->secureParam($companyId)}'";
             $q = mysql_query($sql, $this->dbManager->getConnection());

                        if($q === false)
                        {
                              [...]
                        }
                        else
                        {
                                $r = mysql_fetch_assoc($q);
                                if(!empty($r))
                                {
                                        $company = new Company();
                                        $company->setId($r['company_id']);
                                        [...]
                                        
$company->setLogoNormal($r['company_logo_normal']);
                                        
$company->setLogoSmall($r['company_logo_small']);
                                        [...]
                                        $result = $company;
                                }
                        }
####
...und dann beim einem update (hier auch wenn sie nicht verändert 
wurden) via replace wieder geschrieben:
####
[...]
 $sql = "REPLACE INTO ".$this->t_company."
                                        (
                                                company_id,
                                                 [...]
                                                company_logo_normal,
                                                company_logo_small
                                        )
                                        VALUES
                                        (
                                                
'{$this->dbManager->secureParam($this->id)}',
                                                [...]
                                                
'{$this->dbManager->secureParam($this->logo_normal)}',
                                                
'{$this->dbManager->secureParam($this->logo_small)}'
                                        )"
[...]
####
$this->secureParam() escaped wie ich es bereits geschrieben hatte.

>> Du wendest String-Funktionen auf binäre Daten an!(?)
>>     
>
> Strings SIND binäre Daten!
>
>   
>> Gruß, Hans
>>     
>
>
> Yannik
>   


php::bar PHP Wiki   -   Listenarchive