2013-04-29 3 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

+0

Нормализация базы данных, в то время как отличная идея, не решит настоящую проблему здесь - это довольно очевидно, где массив поступает, если вы начинаете вверху и отслеживаете его, вместо того, чтобы смотреть только на результат всего программа - я не решаюсь просто исправить эту штуку, хотя, поскольку весь подход делает такой маленький смысл в первую очередь (имеется несколько массивов, но нет очевидной причины для любого из них). – Quentin

ответ

-1

Вы можете использовать сериализацию/десериализацию и сохранить в поле типа TEXT для массива.

1

Конечно, он показывает «массив». посмотрите, что вы делаете:

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

так, изменение:

$pid=implode(",",$_SESSION['pid1'][0]); 
Смежные вопросы