我想在将总订单发送到Paypal之前保存额外的信息.对于每个项目,我在我的MySQL数据库中创建了一个我要存储它的列.现在我想将它保存为一个数组,稍后我可以阅读它来创建一个PHP页面.额外字段取自输入表单字段.
通过使用数组,我可以确保不混淆信息吗?
Emi*_*röm 36
您可以使用serialize
/ 存储数组unserialize
.使用该解决方案,它们不能轻易地从其他编程语言中使用,因此您可以考虑使用json_encode
/ json_decode
而不是(它为您提供广泛支持的格式).避免使用implode
/ explode
为此,因为您可能最终会出现错误或安全漏洞.
请注意,这会使您的表非规范化,这可能是一个坏主意,因为您无法轻松查询数据.因此在继续之前要仔细考虑.您是否需要查询数据以获取统计数据或其他信息?还有其他理由来规范化数据吗?
另外,不要保存原始$_POST
数组.有人可以轻松制作自己的网络表单并将数据发布到您的网站,从而发送一个占用大量空间的非常大的表单.保存您想要的那些字段,并确保在保存之前验证数据(这样您就不会获得无效值).
Sli*_*liq 13
这样做的方法是序列化数组,这意味着"从中创建一个字符串".为了更好地理解这一点,请看一下:
$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
Run Code Online (Sandbox Code Playgroud)
要使用PHP将任何数组(或任何对象)转换为字符串,请调用serialize():
$array = array( 1, 2, 3 );
$string = serialize( $array );
echo $string;
Run Code Online (Sandbox Code Playgroud)
$ string现在将保存数组的字符串版本.上面代码的输出如下:
a:3:{i:0;i:1;i:1;i:2;i:2;i:3;}
Run Code Online (Sandbox Code Playgroud)
要从字符串转换回数组,请使用unserialize():
// $array will contain ( 1, 2, 3 )
$array = unserialize( $string );
Run Code Online (Sandbox Code Playgroud)
使用PHP函数serialize()
将数组转换为字符串.这些字符串可以很容易地存储在MySQL数据库中.unserialize()
如果需要,可以使用它们再次转换为数组.