【问题标题】:php unserialize valuesphp反序列化值
【发布时间】:2017-06-10 19:46:50
【问题描述】:

$psabad1(i:169;i:170;i:173);这是序列化的。我想将此值转换为(169,170,173)。在这段代码中只返回第一个值(169),而我想返回所有值(169,170,173)

$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;
}

【问题讨论】:

  • 我无法理解您的问题。你能用一个暗示性的标题和简洁的信息重写你的帖子吗?
  • 使用英文变量名也有助于我们更好地理解您的代码。
  • 在此代码中仅打印第一个 $psabad1 的值,而我想打印 $psabad1 中的所有值

标签: php mysql database mysqli phpmyadmin


【解决方案1】:

你的输出看起来很奇怪。通常,序列化数据如下所示:

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)

【讨论】:

  • 感谢您的回答我想要 $s = 'i:1;i:2;i:3;i:4;i:5;i:6;i:7;i:8;我:9;';转换为 $a=1,2,3,4,5,... 并使用 Just one in ring while 例如:while($S.count){replace $r=a}
  • 我的例子中的 implode(',' _unserialize($s))foreach(_unserialize($s)...) 怎么样?
  • 您的代码返回真或假,但我想返回数组值中的所有值,这意味着分别返回 1,2,3,4,5,6
  • 和值 $s 来自数据库
  • 请回答这个问题
猜你喜欢
  • 1970-01-01
  • 2011-02-02
  • 1970-01-01
  • 2011-08-11
  • 2014-02-19
  • 2012-04-15
  • 2014-11-18
相关资源
最近更新 更多