全注文をPaypalに送信する前に、追加情報を保存したいと思います。アイテムごとに、MySQLデータベースに保存する1つの列を作成しました。今、PHPページを作成するために後で読むことができる配列として保存することを考えていました。追加のフィールドは、入力フォームフィールドから取得されます。
配列を使用することで、情報を混同しないようにすることができますか?
serialize
/を使用して配列を格納できますunserialize
。このソリューションでは、他のプログラミング言語から簡単に使用することはできないため、代わりにjson_encode
/を使用することを検討してjson_decode
ください(広くサポートされている形式になります)。おそらくバグやセキュリティ上の欠陥が発生する可能性があるため、これに/を使用することは避けてください。implode
explode
これにより、テーブルが正規化されなくなることに注意してください。これは、データを簡単にクエリできないため、お勧めできません。したがって、先に進む前にこれを慎重に検討してください。統計などのためにデータを照会する必要がありますか?データを正規化する他の理由はありますか?
$_POST
また、生の配列を保存しないでください。誰かが簡単に自分のWebフォームを作成してデータをサイトに投稿できるため、多くのスペースを占める非常に大きなフォームを送信できます。必要なフィールドを保存し、保存する前にデータを検証してください(無効な値が取得されないようにするため)。
そのようなことが行われる方法は、配列をシリアル化することです。これは、「配列から文字列を作成する」ことを意味します。これをよりよく理解するために、これを見てください:
$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()
を使用して、配列を文字列に変換します。これらの文字列は、MySQLデータベースに簡単に保存できます。それらを使用unserialize()
すると、必要に応じて配列に再度変換できます。
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
$myArray = new array('1', '2');
$seralizedArray = serialize($myArray);
?>
RDBMテーブルのコンマ区切り文字を使用して複数値の列に格納します。
MySQLJSONデータ型を使用して配列を格納できます
mysql> CREATE TABLE t1 (jdoc JSON);
クエリOK、影響を受ける行は0(0.20秒)
mysql> INSERT INTO t1 VALUES('{"key1": "value1", "key2": "value2"}');
クエリOK、影響を受ける1行(0.01秒)
上記のオブジェクトをPHPで取得するには
json_encode(["key1"=> "value1", "key2"=> "value2"]);
詳しくはhttps://dev.mysql.com/doc/refman/8.0/en/json.htmlをご覧ください