У меня есть многостраничная форма и я пытаюсь захватить массив в качестве сеанса для вставки в mysql. Вторая страница формы - это раздел «Адрес». Здесь я прошу адресную информацию. Пользователь может нажать кнопку «ввести другой адрес», которая расширит еще одну ячейку.Как вставить массив сеансов в MySQL DB с помощью PHP
Пользователь нажимает рядом со следующей страницей (phone.php), где я запрашиваю информацию о телефоне. На этой странице я думаю, что я правильно регистрировать данные сессии следующим образом:
if(!isset($_SESSION))
{
@session_start();
}
header("Cache-control: private");
ob_start();
include('header.php');
//now, let's register our session variables from address.php
session_register('addressLineOne');
session_register('addressLineTwo');
//finally, let's store our posted values in the session variables
$_SESSION['addressLineOne'] = $_POST['addressLineOne'];
$_SESSION['addressLineTwo'] = $_POST['addressLineTwo'];
В конце концов мы попали в submit.php. Если я отключу код для добавления дополнительного адреса, это вставка, которую я использую, которая работает нормально.
$insertAddress="INSERT INTO address (idperson, addressLineOne, addressLineTwo)
VALUES ('$id','$_SESSION[addressLineOne]','$_SESSION[addressLineTwo]')";
if (!mysql_query($insertAddress,$con))
{die('Error: ' . mysql_error());}
echo "";
Когда я включаю «добавить дополнительный адрес» код, вставка выше будет вставлять «ARRAY» в каждой области БД. Я пытался из следующих действий:
foreach($_SESSION['idperson'] as $row=>$id)
{
$idperson=$id;
$addressLineOne=$_SESSION['addressLineOne'][$row];
$addressLineTwo=$_SESSION['addressLineTwo'][$row];
}
//enter rows into database
foreach($_SESSION['idperson'] as $row=>$id)
{
$idperson=mysql_real_escape_string($id);
$addressLineOne=mysql_real_escape_string($_SESSION['addressLineOne'][$row]);
$addressLineTwo=mysql_real_escape_string($_SESSION['addressLineTwo'][$row]);
}
$insertAddress="INSERT INTO address (idperson, addressLineOne, addressLineTwo)
VALUES ('.$id.','.$addressLineOne.','.$addressLineTwo.')";
if (!mysql_query($insertAddress,$con))
{
die('Error: ' . mysql_error());
}
echo "$row record added";
Вместо того чтобы работать, однако, выше просто вставляет пару точек, как «...» в базу данных. Я не знаю, что еще делать. Неужели я не правильно собираю данные сеанса? Мой код foreach выключен? Спасибо за любую помощь.
Вот код, я использую, чтобы добавить еще одну таблицу на address.php:
<?php for($i=1; $i<6; $i++):?>
<div id='hidden<?php echo $i; ?>' style='display: none'>
<tr class="odd">
<td width="33%">Street/Number</td>
<td><input type="text" name="addressLineOne[]" id="addressLineOne<?php echo $i; ?>"/></td>
</tr>
<tr>
<td>Address 2</td>
<td><input type="text" name="addressLineTwo[]" id="addressLineTwo<?php echo $i; ?>"/></td>
</tr>
<?php endfor; ?>
Submit.php не имеет ничего, кроме подключения к БД и выше вставки.
Итак, просто на первом проходе: знаете ли вы, что 'session_register' устарел? и что его использование с '$ _SESSION' приведет к сумасшедшим, диким и непредсказуемым результатам (согласно руководству)? –
Я этого не знал. Я не программист php, просто понимаю, как это происходит. я, должно быть, получил это из старого учебника. Могу ли я просто полностью удалить session_register? – dfour
На втором проходе: нам нужно увидеть больше от 'submit.php' или этой вещи" inserting array ", которую вы делаете. –