尝试插入多个" 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);
答案 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))