尝试将数据从sql插入到cookie中

时间:2016-08-30 10:21:45

标签: php mysql cookies

尝试插入多个" ID"从mysql数据库进入cookie。所以,我正在按几个链接并在数组中收集它们的ID。然后尝试内爆这个数组并将其提供给一个函数,该函数应从sql数据库获取信息并将其写入cookie $ basket。 但是在showbasket.php中,我只有一个,最后一个被压缩的id。我认为主要问题在于ID,但我无法弄明白。

P.S。这只是一个cookie训练,而不是一个真正的实现。

这是一个文件add2basket.php:

<?php

   require 'functions.php';

   $id = $_GET['id'];

   $arr = [];
   $arr[]=$id;
   $ids = implode(",", $arr); 

 save2basket($ids); 
 header("Location: catalog.php");
?>

这是一个函数save2basket:

function save2Basket($ids){
     global $conn, $basket, $ids;

     if(!isset($_COOKIE['basket']))
     $basket = setcookie('basket', $sel);


     $sql = "SELECT * FROM catalog WHERE id IN ($ids)";
     $result = mysqli_query($conn, $sql);

     $select = mysqli_fetch_all($result, MYSQLI_ASSOC);
            mysqli_free_result($result);
     $sel = base64_encode(serialize($select));
     $basket = setcookie('basket', $sel);
}

这是一个showbasket.php文件:

   <?php

   $basket = unserialize(base64_decode($_COOKIE['basket']));
   print_r($basket);

1 个答案:

答案 0 :(得分:0)

用以下代码替换您的PHP代码。您必须在会话中保存所选的ID。目前,每次调用php页面时,你的数组都会被初始化为空白,并且它只包含最近的id。在整个操作完成后,不要忘记取消会话。

import timeit
setup="from array import array; import ctypes; t = [i for i in range(1000000)];"
print(timeit.timeit(stmt='(ctypes.c_uint32 * len(t))(*t)',setup=setup,number=10))
print(timeit.timeit(stmt='array("I",t)',setup=setup,number=10))
print(timeit.timeit(stmt='set(t)',setup=setup,number=10))