String => Array
Hallo NG,
was muss ich beachten wenn ich einen String in einen Array schreibe und
danach in eine MySQL-Tabelle? Welche Zeichen muss ich ersetzen? Ich
glaube zu wissen, dass das Hochkomma (') den Array kaputt macht - sind
noch andere Dinge zu beachten?
Grüße Daniel
Re: String => Array
..oO(Daniel Schmidt)
>was muss ich beachten wenn ich einen String in einen Array schreibe und
>danach in eine MySQL-Tabelle? Welche Zeichen muss ich ersetzen? Ich
>glaube zu wissen, dass das Hochkomma (') den Array kaputt macht
Dem Array tut das nichts, aber ein Hochkomma hat eine besondere
Bedeutung in SQL-Anfragen.
>- sind
>noch andere Dinge zu beachten?
Benutze mysql_real_escape_string() oder PDO (Prepared Statements), dann
brauchst Du Dir keine Gedanken um einzelne, möglicherweise "schädliche"
Zeichen zu machen.
Micha
Re: String => Array
Daniel Schmidt wrote:
>was muss ich beachten wenn ich einen String in einen Array schreibe und
>danach in eine MySQL-Tabelle? Welche Zeichen muss ich ersetzen? Ich
>glaube zu wissen, dass das Hochkomma (') den Array kaputt macht - sind
>noch andere Dinge zu beachten?
Ich verstehe Deine Frage nicht so ganz. Ein Hochkomma macht nichts
kaputt und Du kannst (vermutlich) einen String auch in einen Array
schreiben, etwa
$a = array("Guten'Tag" => "Good'Day");
Das Hochkomma kann sowohl als Schlüssel als auch als Wert benutzt
werden. Da geht nichts "kaputt".
Bei der Datenbank-Query solltest Du generell die Abfragen vor
ungewollten Eingaben sichern, bei MySQL z.B. mittels
$result = $db->query(sprintf('
SELECT id
FROM user
WHERE name = "%s"
', mysql_real_escape_string($name))
);
oder Du liest
http://www.php.net/manual/de/ref.pdo.php
bzw. die entsprechende Dokumentation des Pakets, welches Du zum
Datenzugriff benutzt.
Schöne Grüße, Steffen
Re: String => Array
steffen bruentjen schrieb:
> Bei der Datenbank-Query solltest Du generell die Abfragen vor
> ungewollten Eingaben sichern, bei MySQL z.B. mittels
>
> $result = $db->query(sprintf('
> SELECT id
> FROM user
> WHERE name = "%s"
> ', mysql_real_escape_string($name))
> );
>
> oder Du liest
>
> http://www.php.net/manual/de/ref.pdo.php
>
> bzw. die entsprechende Dokumentation des Pakets, welches Du zum
> Datenzugriff benutzt.
um den OP nicht ganz zu verwirren. Die Funktion/Methode die genutzt
werden muss ist von der Schnittstelle abhängig mit welcher auf die
Datenbank zugreifst.
Das Beispiel oben ist MySQLi [1], das Beispiel von Michael ist MySQL
[2]. PDO [3] ist eine Alternative dazu, die beide genannt haben. Die
Datenbank ist immer die selbe => MySQL. (Bzw. bei PDO kann es auch jede
andere Datenbank sein, die unterstützt wird)
[1] http://php.net/mysql
http://www.php.net/manual/de/function.mysql-escape-string.ph p
[2] http://php.net/mysqli
http://www.php.net/manual/de/function.mysqli-real-escape-str ing.php
[3] http://php.net/pdo
http://www.php.net/manual/de/function.PDO-quote.php
--
Mit freundlichen Grüßen,
Christoph Herrmann
http://dragonprojects.de/
Re: String => Array
Christoph Herrmann wrote:
>steffen bruentjen schrieb:
>> Bei der Datenbank-Query solltest Du generell die Abfragen vor
>> ungewollten Eingaben sichern, bei MySQL z.B. mittels
>>
>> $result = $db->query(sprintf('
>> SELECT id
>> FROM user
>> WHERE name = "%s"
>> ', mysql_real_escape_string($name))
>> );
>>
>> oder Du liest
>>
>> http://www.php.net/manual/de/ref.pdo.php
>>
>> bzw. die entsprechende Dokumentation des Pakets, welches Du zum
>> Datenzugriff benutzt.
>
>um den OP nicht ganz zu verwirren. Die Funktion/Methode die genutzt
>werden muss ist von der Schnittstelle abhängig mit welcher auf die
>Datenbank zugreifst.
>
>Das Beispiel oben ist MySQLi [1], das Beispiel von Michael ist MySQL
>[2]. PDO [3] ist eine Alternative dazu, die beide genannt haben. Die
>Datenbank ist immer die selbe => MySQL. (Bzw. bei PDO kann es auch jede
>andere Datenbank sein, die unterstützt wird)
Nein, von MySQLi redete bisher niemand! :)
Schöne Grüße, steffen
Re: String => Array
steffen bruentjen schrieb:
>>> $result = $db->query(sprintf('
>>> SELECT id
>>> FROM user
>>> WHERE name = "%s"
>>> ', mysql_real_escape_string($name))
>>> );
> Nein, von MySQLi redete bisher niemand! :)
was ist dann $db->query()? MySQL besitzt keine Klassen. ;)
--
Mit freundlichen Grüßen,
Christoph Herrmann
http://dragonprojects.de/
Re: String => Array
Christoph Herrmann wrote:
>steffen bruentjen schrieb:
>
>>>> $result = $db->query(sprintf('
>>>> SELECT id
>>>> FROM user
>>>> WHERE name = "%s"
>>>> ', mysql_real_escape_string($name))
>>>> );
>> Nein, von MySQLi redete bisher niemand! :)
>
>was ist dann $db->query()? MySQL besitzt keine Klassen. ;)
Verstehe.. Das war eigentlich eine beliebige Abstraktionsklasse. Ist
aber so wohl ein bisschen inkonsequent.
Schöne Grüße, steffen
Re: String => Array
Hallo NG,
Wie und wo wende ich mysql_real_escape_string() genau an?
Brauche ich das für UPDATE, INSRERT und SELECT?
Das Manual sagt ich nutze fprint() wozu dies?
Eingabe:
mysql_query("UPDATE $sql_tabelle SET feld='%s',
mysql_real_escape_string($array)") OR die (mysql_error());
Ausgabe:
mysql_query("SELECT FROM $sql_tabelle WHERE feld='%s',
mysql_real_escape_string($array)") OR die (mysql_error());
so richtig?
Grüße Daniel
Re: String => Array
Ich sehe gerade Zeichen werden auf dem Server automatisch maskiert,
darum ist der array auch "kaputt" MySQL fügt ein \' vor das Hochkomma
und der Arrayinhalt Arraylänge stimmt nicht mehr - wenn ich nun den
Slash entferne ist das Array wieder lesbar.
Grüße Daniel
Re: String => Array
Daniel Schmidt wrote:
>Ich sehe gerade Zeichen werden auf dem Server automatisch maskiert,
>darum ist der array auch "kaputt" MySQL fügt ein \' vor das Hochkomma
>und der Arrayinhalt Arraylänge stimmt nicht mehr - wenn ich nun den
>Slash entferne ist das Array wieder lesbar.
Klingt nach http://de.php.net/magic_quotes.
Stell sie ab und benutze stattdessen eine der anderen genannten
Möglichkeiten.
.... warum ist das Array mit Backslashes nicht lesbar?
Schöne Grüße, Steffen