Paypalに注文全体を送信する前に、追加情報を保存したいと思います。アイテムごとに、MySQLデータベースに格納する単一の列を作成しました。今、私は後でPHPページを作成するために読むことができる配列として保存します。追加のフィールドは入力フォームフィールドから取得されます。
配列を使用することで、情報を混同しないようにできますか?
serialize
/ unserialize
を使用して配列を保存できます。そのソリューションでは、他のプログラミング言語から簡単に使用できないため、代わりに json_encode
// json_decode
を使用することを検討できます(これにより、サポートされている形式)。 Avoidこれにはimplode
/explode
を使用してください。バグやセキュリティの欠陥に陥る可能性が高いからです。
これによりテーブルが非正規化されることに注意してください。データを簡単にクエリできないため、これは悪い考えかもしれません。したがって、先に進む前にこれを慎重に検討してください。統計などのデータを照会する必要がありますか?データを正規化する他の理由はありますか?
また、生の$_POST
配列を保存しないでください。誰かが簡単に独自のWebフォームを作成し、サイトにデータを投稿できるため、多くのスペースを必要とする非常に大きなフォームを送信できます。必要なフィールドを保存し、保存する前にデータを検証してください(無効な値が取得されないようにします)。
そのようなことを行う方法は、serializing配列を使用することです。これは、「文字列を作成する」ことを意味します。これをよりよく理解するには、これを見てください:
$array = array("my", "litte", "array", 2);
$serialized_array = serialize($array);
$unserialized_array = unserialize($serialized_array);
var_dump($serialized_array); // gives back a string, perfectly for db saving!
var_dump($unserialized_array); // gives back the array again
PHPを使用して配列(またはオブジェクト)を文字列に変換するには、serialize():を呼び出します
$array = array( 1, 2, 3 );
$string = serialize( $array );
echo $string;
$ stringは配列の文字列バージョンを保持します。上記のコードの出力は次のとおりです:
a:3:{i:0;i:1;i:1;i:2;i:2;i:3;}
文字列から配列に戻すには、unserialize():を使用します
// $array will contain ( 1, 2, 3 )
$array = unserialize( $string );
PHP function serialize()
を使用して配列を文字列に変換します。これらの文字列はMySQLデータベースに簡単に保存できます。unserialize()
を使用して配列に変換できます必要に応じて再度。
RDBMsテーブルのコンマ区切りで複数値列に保存します。
<?php
$myArray = new array('1', '2');
$seralizedArray = serialize($myArray);
?>