gpt4 book ai didi

php - 反序列化查询(数组)数据不起作用

转载 作者:行者123 更新时间:2023-11-29 23:50:55 25 4
gpt4 key购买 nike

我最近创建了一个带有复选框的搜索函数,用于查询提交的复选框值并将这些值返回到表中。然而问题是某些复选框值(在数据库中)是序列化的。当我在每个复选框值的 foreach 中显示查询结果变量时,它返回序列化字符。显然我只想显示没有奇怪字符的字符串。

返回整个序列化字符的原始代码如下:

if(count($tmp)>0){
for($i=0;$i<count($tmp);$i++){
echo "<tr>";
foreach($tmp[$i] as $key=>$value){

echo"<td>" . $value . "</td>";
}
echo "</tr>";
}
}
echo '</table>';

因此,为了仅显示数据库值的字符串,我尝试使用反序列化函数($tmp 是存储查询结果的变量)。然而,这存在几个问题,即:

  1. echo 不适用于反序列化
  2. 数据库和查询还可以返回非序列化数据(因此 $tmp 变量可以包含 a. 带有奇怪字符的序列化值和 b. 只是一个非序列化的普通字符串)。
  3. 因为反序列化函数也获取“普通”字符串,所以这些普通字符串将被输出为空白..
  4. 由于某种原因,数组/非序列化数据(使用 print_r)的输出不显示字符串,而是显示整个数组名称,如下所示:Array ( [0] => [1] => Dutch )

下面的代码是我尝试反序列化数据的方法:

  if(count($tmp)>0){
for($i=0;$i<count($tmp);$i++){
echo "<tr>";
foreach($tmp[$i] as $key=>$value){

echo "<td>";
$b=unserialize($value);
print_r($b);
echo "</td>";
}
echo "</tr>";
}
}
echo '</table>';

不过,正如之前所说,上面的代码显示了整个数组名称,并且查询的数据库的“正常”字符串显示为空白。

那么如何解决这个问题呢?

提前谢谢

最佳答案

Php unserialize 可以返回几个内容,包括您的情况的数组。这样做

foreach($tmp[$i] as $key=>$value){              
echo "<td>";
$b=unserialize($value);
if(is_array($b)){
//this assumes your array is always like this Array ( [0] => [1] => Netherlands )
echo $b[1];
}
else{
echo $value;
}
echo "</td>";
}

关于php - 反序列化查询(数组)数据不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25666731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com