Wiedergabe von Array mit eine PHP Script

  • Themenstarter Themenstarter Muuip
  • Beginndatum Beginndatum
M

Muuip

Hallo zusammen

Ich kann ein Array von ein PHP Formular zum Formular Ausgabe lesen. Aber, wann die Array ist erte Mal in MySQL gespeichert, ich kann, von Ausgabe Formular, nur das wort "Array" lesen.

Ich habe mit serialize() unserialize() versucht, damit ich kann die Array in MySQL speichern aber kann trotzdem die Array von Ausgabe Formular nicht lesen (immer nur das Wort "Array" wird angezeigt).

Der INSERT Code sieht so aus:

PHP:
$db = new MySQLi('localhost', 'root', '', 'datenbank'); 

//variable1 ist ein String, variable2 ist ein Array
$sql = 'INSERT INTO tabelle (variable1, variable2) VALUES (?, ?)'; 
$kommando = $db->prepare($sql) ; 
$kommando->bind_param('ss', $_POST['variable1'], serialize($_POST['variable2'])); 
$kommando->execute(); 

$db->close();


Leider unserialize() funktioniert nicht, ich habe bei http://www.Google.com/codesearch und http://www.php.net und video2brain DVD gesucht habe finde keine passende Code für meine Script.

Ich muss unserialize() irgendwo einsetzen aber wo?

Hier ist meine Ausgabe Code:


PHP:
$db = new MySQLi('localhost', 'root', '', 'datenbank'); 
$sql = 'SELECT tabelle.variable1, tabelle.variable2 FROM tabelle'; 
$kommando = $db->prepare($sql); 
$kommando->execute(); 
$kommando->bind_result($variable1, $variable2); 

While ($kommando->fetch()) 
{ 
printf('<tr><td>%s</td><td>%s</td></tr>', htmlspecialchars($variable1), htmlspecialchars($variable2)); 
} 
$db->close();
Ich habe versucht unserialise() in den Kommando zu einsetzen oder direkt bei die variable aber die ausgabe zeigt immer „Array“ oder gar nichts.

Wo soll ich unserialize() richtig einsetzen? Soll ich ein andere Ausgabe Script schreiben?

Grüße

Claude
 
Hi Claude,

Grundsätzlich muss das unserialisiert werden, was du serialisiert hast.

Aber, wann die Array ist erte Mal in MySQL gespeichert, ich kann, von Ausgabe Formular, nur das wort "Array" lesen.

Das ist so gewollt, denn die toString Funktion des PHP-Array Konstrukts liefert "array()" zurück.

Ich habe mit serialize() unserialize() versucht, damit ich kann die Array in MySQL speichern
Guter Ansatz, wenn es denn überhaupt notwendig ist. Das steht hier aber erstmal nicht zur Frage... Ich denke, du hast deinen Grund und eine Berechtigung für diese Methode.

aber kann trotzdem die Array von Ausgabe Formular nicht lesen (immer nur das Wort "Array" wird angezeigt).

Antwort darauf:
Das ist so gewollt, denn die toString Funktion des PHP-Array Konstrukts liefert "array()" zurück.

Ein Array kannst du zwar vollständig ausgeben via
PHP:
var_dump($array);
// oder
print_r($array);
Aber so gesehen ist es ein Array, welches als String zu einem einfachen "array()" wird. Du könntest die Ausgabe folgendermaßen vornehmen (nur als Beispiel):
PHP:
echo implode(', ', $array);
Die Implode-Funktion liefert bei einem Eindimensionalen Array sämtliche Werte in der Reihenfolge, getrennt durch eine Trennzeichensequenz, wieder.

Alternativ kannst du durch das Array rekursiv oder iterativ wandern, indem du die Ausgabe folgendermaßen gestaltest:
PHP:
function print_array(&$array)
{
    foreach ($array as $key => &$value) {
        if (is_array($value)) {
            print_array($value);
        } else {
            echo "[{$key}] => {$value}\n";
        }
    }
}

print_array($variable2);

Oder änhlich, oder ganz anders...

Nun noch zum (De)Serialisieren ein paar Worte: Du musst das, was du serialisierst, auch deserialisieren. Anders herum musst du aber das, was nicht serialisiert worden ist, nicht deserialisieren. Angenommen, du hast $variable1 nicht serialisiert, musst du sie auch nicht deserialisieren. Hast du hingegen $variable2 serialisiert, musst du sie natürlich auch wieder zur Verwendung deserialisieren.

Die Ausgabe kannst du übrigens auch über das "serialisierten Array" (der zurückgegebene Wert ist ja String) laufen lassen:
PHP:
$serialized = serialize($variable2);
echo "{$serialized}";
 
Zurück