用户浏览器中的mysql_fetch_assoc数据到COOKIE

时间:2013-11-02 03:49:14

标签: php mysql cookies

我在mysql中有数据,它不需要任何安全性。

每次使用mysql_fetch_assoc时,我都有一个sql查询字符串来获取数据。

所以,我计划在用户浏览器中存储数据。为了减少quql到sql的数量。

    if (!isset($_COOKIE['countries'])){
    $query = "SELECT iso,name FROM sel_country";
    $countries = mysql_query($query);
    setcookie('countries', serialize($countries), time()+3600);
   }else{
    $countries = $unserialize($_COOKIE['countries']);
    }
while ($row = mysql_fetch_assoc($countries)) {echo $row['name']}

但是,当设置cookie时,它显示以下错误

致命错误:函数名称必须是第15行/home/worlds/public_html/index/ctrl.php中的字符串

我的浏览器中的cookie显示内容为i%3A0%3B

请帮帮我,我该怎么办?

2 个答案:

答案 0 :(得分:1)

您无法序列化结果资源,您需要首先使用mysql_fetch_assoc。在调用fetch方法之前,结果实际上并未从mysql服务器中提取。

像这样:

if (!isset($_COOKIE['countries'])){
    $query = "SELECT iso,name FROM sel_country";
    $countries = mysql_query($query);
    $result = array();
    while ($row = mysql_fetch_assoc($countries)) {$result[] = $row['name']}
    setcookie('countries', json_encode($result), time()+3600);

    //And to make the rest of the script able to use it as below:
    $countries = $result;
} else {
    $countries = json_decode($_COOKIE['countries']);
}

答案 1 :(得分:0)

使用unserialise()而不是$ unserialize()