Вставка в сериализованный массив в PHP

Это мой первый раз здесь, и я вытягивал свои волосы из-за этого, поэтому я подумал, что это будет хороший первый вопрос для меня.

Я сохраняю данные массива в базе данных mysql, а затем позже использую unserialize для его редактирования. Проблема заключается в том, что он обрабатывает каждый другой индекс в массиве, когда я редактирую только один индекс. Вот пример кода:

foreach($post as $key => $value) { if (isset($row)) { if ($i > 2) { $tempArray = unserialize($row[$i]); } } $tempArray[$time] = $value; if ($key == 'pid' || $key == 'uid') { $data[$key] = $value; } else { $data[$key] = serialize($tempArray); } $i += 1; unset($tempArray); } 

Спасибо за любую проницательность, которую вы можете дать.

для хранения сериализованных данных массива в mysql и для извлечения и сохранения в той же таблице, вот как это сделать.

Извлеките сериализованные данные из таблицы и несериализуйте их и сохраните данные массива внутри переменной. внесите изменения в данные массива, используя переменную, которую мы сохранили.

Снова мы сериализуем переменную с модифицированным массивом и обновляем поле таблицы mysql новыми сериализованными данными.

Например:

 $data = array( "uid" => "some value", "pid" => "some value" ); $store_in_database = serialize($data); /* ...do the mysql insert query to store the new data in the field (serializedfield)... */ 

Теперь обновите данные сериализации, хранящиеся в поле таблицы базы данных.

/ * … извлекать строку таблицы или записи любым способом (одна запись или несколько) * /

 foreach($db_result as $db_row){ $temp_array = $db_row['serializedfield']; $temp_array['uid'] = "a new value"; $temp_array['pid'] = "another new value"; /* ... i wanted to add another array value */ $temp_array['akey'] = "some value"; $store_database = serialize($temp_array); /* ... do the mysql update query to replace this new data with the old one. */ unset($temp_array); } с foreach($db_result as $db_row){ $temp_array = $db_row['serializedfield']; $temp_array['uid'] = "a new value"; $temp_array['pid'] = "another new value"; /* ... i wanted to add another array value */ $temp_array['akey'] = "some value"; $store_database = serialize($temp_array); /* ... do the mysql update query to replace this new data with the old one. */ unset($temp_array); } 

Вышесказанное просто для того, чтобы дать вам представление. Надеюсь, вы поняли, как это должно быть сделано здесь.