2013-11-07 1 views
0

Как я могу взять набор записей, сохранить его в массиве и затем сделать этот массив значением сеанса? Вот код, который я придумал (с ответами ниже интегрированный):создать сеанс с набором записей, хранящимся в массиве

$colname_getAC = "-1"; 
if (isset($_GET['tech_id'])) { 
    $colname_getAC = $_GET['tech_id']; 
} 
mysql_select_db($database_localhost, $localhost); 
$query_getAC = sprintf("SELECT area_code, tech_id FROM zip_zip WHERE tech_id = %s", GetSQLValueString($colname_getAC, "int")); 
$getAC = mysql_query($query_getAC, $localhost) or die(mysql_error()); 
$row_getAC = mysql_fetch_assoc($getAC); 
$totalRows_getAC = mysql_num_rows($getAC); 
session_start(); 
// store session data 
$_SESSION['area_code']= array(); 
while ($row_getAC = mysql_fetch_assoc($getAC)) { 
    $_SESSION['area_code'][] = $row_getAC['area_code']; 
} 

Это просто возвращает «массив» хоть и не коды зон, когда я звоню сеанс.

На сессии я попробовал это также:

$_SESSION['area_code']= $results[]; 

Но это только что сделал страницу остановку мертвого в его треках с пустым экраном.

Причина в том, что я хочу вставить значения в этот сеанс на другую страницу.

+1

Почему/время цикла? – Rikesh

+2

_ «Это просто возвращает« массив », хотя и не кодов областей при вызове сеанса.» _ - тогда, скорее всего, ваш «вызов сеанса» неверен. (Вы знаете, что попытка вывода массива через echo даст вам именно этот текст в точности, верно?) – CBroe

+0

Я думал, что это заставило его получить каждое значение? – SherwoodPro

ответ

1

Вы это хранится в виде массива, вы можете увидеть его здесь:

var_dump($_SESSION['area_code']); 

Я действительно не понимаю, что именно вы хотите.

Кроме того, это неправильно $_SESSION['area_code']= $results[];

Редакция: Изменить код:

$colname_getAC = "-1"; 
if (isset($_GET['tech_id'])) { 
    $colname_getAC = $_GET['tech_id']; 
} 
mysql_select_db($database_localhost, $localhost); 
$query_getAC = sprintf("SELECT area_code, tech_id FROM zip_zip WHERE tech_id = %s", GetSQLValueString($colname_getAC, "int")); 
$getAC = mysql_query($query_getAC, $localhost) or die(mysql_error()); 
$totalRows_getAC = mysql_num_rows($getAC); 
session_start(); 
// store session data 
$_SESSION['area_code']= array(); 
while ($row_getAC = mysql_fetch_assoc($getAC)) { 
    $_SESSION['area_code'][] = $row_getAC['area_code']; 
} 
+0

Это остановило мою страницу от выполнения. Если я удаляю скобу в конце, массив заканчивается 0? – SherwoodPro

+0

Извините, отредактировано, теперь все в порядке. – Legionar

+0

Ваш массив (1) {[0] => строка (3) "757"}. Не оба кода зоны также. Я обновил свой код, чтобы включить набор записей. Что-то не так с моей стороны? – SherwoodPro

1

Первое - вы должны изменить свою логику:

Отсюда:

$results = array(); 
do { 
    $results[] = $row_getAC['area_code']; 
} while ($row_getAC = mysql_fetch_assoc($getAC)); 
$_SESSION['area_code']= $results; 

к этому:

$results = array(); 
while ($row_getAC = mysql_fetch_assoc($getAC)) 
{ 
    $results[] = $row_getAC['area_code']; 
} 
$_SESSION['area_code']= $results; 

Я только что испытанный - PHP не имеет никаких проблем, хранящий массивы в качестве сессии переменные, и они доступны на других страницах.

BTW - вы использовали session_start() правый?

Update:

  • делать {...} в то время как всегда выполняется хотя бы один раз, как условие проверяет в конце
  • в то время как {...} в точности условие Противоположные (проверки перед выполнением кода внутри блока кода

вы должны использовать последний здесь, так как (например) ваш SQL-запрос может вернуть пустой результат (без записи), так что вы не должны выполнять код в то время как блок, так как нет никаких данных, чтобы получить.

+0

Возможно, я НЕ правильно понимаю DO и WHILE. Какая разница в твоей и моей? – SherwoodPro

+0

do ...в то время как будет выполняться как минимум один раз, а также первое выполнение будет ложным, потому что $ row_getAC пуст в первом цикле. – Legionar

+0

Хорошо, я обновил свой код, теперь он хранит только последний код области (из двух). Набор записей получает 614 и 757, но массив var_dump говорит: array (1) {[0] => string (3) «757»} Должен ли я добавить свой код для набора записей выше? – SherwoodPro

Смежные вопросы