0

请帮助解决这个错误非法字符串偏移“标题”这里是jquery

 data:{option:'catapply',sr:$(":input").serialize()},

和 catapply php 数据

if($_REQUEST['option']=='catapply'){

    $sc  = serialize($_POST['sr']);

    mysql_query("insert into user_data(uid,mid,cid,scid,data) values('$session->userid','5','5','5','$sc')");

现在我正在使用上述方法对存储的db中的上述数据进行反序列化

 $sql = mysql_query("SELECT * from user_data  where uid='$session->userid'");

while ($row = mysql_fetch_array($sql)) {
    $un=unserialize($row['data']);
    $tittle=$un['tittle'];

   echo $tittle;
4

2 回答 2

0

来自http://php.net/manual/en/function.unserialize.php

返回转换后的值,可以是布尔值、整数、浮点数、字符串、数组或对象。

如果传递的字符串不是不可序列化的,则返回 FALSE 并发出 E_NOTICE。

您可以尝试使用错误抑制运算符 (@),但我不会 [通常] 建议这样做。你应该确保它$row['data']不是空的。

if (!empty($row['data']) {
    // here we're suppressing errors
    // @see: http://php.net/manual/en/language.operators.errorcontrol.php
    $un = @unserialize($row['data']); 
    if ($un) {
        // ... so on and so forth
    }
}
于 2012-09-25T07:13:39.620 回答
0

在这条线之后

$un=unserialize($row['data']);

试试这个

var_dump($un) OR print_r($un)

看看$un里面有什么。

$un['tittle']  

这不会评估,因为此语法用于数组评估而不是字符串,并且您的var_dump($un)结果是字符串。

您正在使用此序列化

$sc  = serialize($_POST['sr']);

和反序列化

$un=unserialize($row['data']); // this is query data it should be
$un=unserialize($sc);

如果你想要title 我们的数据

$tittle=$row['tittle'];
于 2012-09-25T07:14:06.850 回答