0

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

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

因此,我打算将数据存储在用户浏览器中。以减少对 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

请帮帮我,我该怎么走?

4

2 回答 2

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']);
}
于 2013-11-02T04:05:37.267 回答
0

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

于 2013-11-02T04:05:14.343 回答