2017-01-25 5 views
-1

Значения $psabad1 is (i:169;i:170;i:173); это сериализовано. Я хочу преобразовать это значение в (169,170,173). В этом коде возврата только первое значение (169) в то время как я хочу вернуть все значения (169,170,173)php unserialize

$stmt1 = $db->prepare("SELECT `psabad`,`transId`,`pardakht` FROM `orders` WHERE  `transId`=?"); 
$stmt1->bind_param("s", $transId); 
$stmt1->execute(); 
$stmt1->store_result(); 
$stmt1->bind_result($psabad1, $transid1, $pardakht1); 

while ($stmt1->fetch()) { 
    $pardakht = unserialize($psabad1); 
    $stmt2 = $db->prepare("SELECT `idsabad`,`idmahsool`,sabad.tedad, sabad.pardakht, pack2.titr, pack2.brand FROM `sabad` INNER JOIN pack2 ON pack2.id = sabad.idmahsool WHERE `idsabad`=?"); 
    $stmt2->bind_param("i", $pardakht); 
    $stmt2->execute(); 
    $stmt2->store_result(); 
    $stmt2->bind_result($idsabad2, $idmahsool2,$tedad2, $pardakht2, $titr2, $brand2); 
    $stmt2->fetch(); 
    echo $titr2; 
} 
+0

Я не могу понять вашу проблему. Не могли бы вы переписать свой пост с наводящим заголовком и краткой информацией? –

+1

Использование английских имен переменных также поможет нам лучше понять ваш код. –

+0

в этом коде печатать только значение first $ psabad1 while я хочу напечатать все значения в $ psabad1 –

ответ

0

Ваш вывод выглядит странно. Как правило, сериализовать данные выглядит следующим образом:

a:9:{i:0;i:1;i:1;i:2;i:2;i:3;i:3;i:4;i:4;i:5;i:5;i:6;i:6;i:7;i:7;i:8;i:8;i:9;} 

Если данные действительно выглядит так, как вы говорите в своем названии, а $ S ниже, вы можете быть в состоянии получить массив с этой маленькой функции:

<?php 

$a = [1,2,3,4,5,6,7,8,9]; 
$s = 'i:1;i:2;i:3;i:4;i:5;i:6;i:7;i:8;i:9;'; 

var_dump($a === _unserialize($s)); 

function _unserialize($s){ 
    $i = 0; 
    $_s = ''; 
    foreach(explode(';', trim($s, '()')) as $part){ 
     if($part != ''){ 
      $_s .= 'i:' . ($i++) . ';' . $part . ';'; 
     } 
    } 
    return unserialize('a:' . $i . ':{' . $_s . '}'); 
} 
?> 

Выходы:

..\php\php5.6\php.exe serialize.php 
bool(true) 
+0

поблагодарить за ответ bou i want $ s = 'i: 1; i: 2; i: 3; i: 4; i: 5; я: 6; я: 7; я: 8; я: 9; '; конвертировать в $ a = 1,2,3,4,5, ... и использовать только один в кольце, например: while ($ S.count) {replace $ r = a} –

+0

Что насчет 'implode (', '_unserialize ($ s)) 'или' foreach (_unserialize ($ s) ...) 'из моего примера? – zenko

+0

ваш код возвращает true или false, но я хочу вернуть все значение в значение массива, которое является средним возвратом 1,2,3,4,5,6 Отдельно –

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