2013-04-29 112 views
-3

我需要帮助在mysql数据库中存储会话变量数组。如何将会话变量数组存储在mysql数据库中?

问题是在mysql数据库中只显示array in table column

session_start(); 
$_SESSION['pid1']=array(); 
$_SESSION['pid1'][]=$_POST['pid']; 

<form name="form1" method="post"> 
<input type="hidden" name="pid[]" value="<?php echo $pid1?>" /> 
</form> 

$pid=implode(",",$_SESSION['pid1']); 
$length = count($_POST['product']); 
for($i=0; $i<$length; $i++) { 
$queryproduct=mysql_query("INSERT INTO shoppingcart VALUES ('','','".$pid."')") 
or die("Order Query Problem"); 
+0

看起来像一个坏的数据库结构 – 2013-04-29 20:39:30

+2

您正在使用[**的**过时的数据库API(HTTP:// stackoverflow.com/q/12859942/19068),并应使用[现代替换](http://php.net/manual/en/mysqlinfo.api.choosing.php)。你也**易受[SQL注入攻击](http://bobby-tables.com/)**,现代的API会使[防御]更容易(http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php)自己从。 – Quentin 2013-04-29 20:42:47

+0

正常化数据库虽然是一个绝妙的想法,但它并不能解决实际问题 - 如果您从顶部开始追踪数据库,而不是仅查看整个输出程序 - 我很犹豫是否只是修复了这部分,因为整个方法首先没有意义(有几个数组,但没有任何明显的原因)。 – Quentin 2013-04-29 20:46:27

回答

-1

您可以使用序列化/反序列化并保存在TEXT类型的数组中。

1

当然是显示“数组”。 看你在做什么:

... 
$_SESSION['pid1'][]=$_POST['pid']; 
// $_SESSION['pid1'][0] // this one has the "pid" data! 

因此,改变:

$pid=implode(",",$_SESSION['pid1'][0]);