将数据库行保存在 Cookie 中,然后检索它们


save database rows in a cookie and then retrieve them

我想使用PHP setcookie(),但我遇到了问题。 事实上,我想从数据库中获取一些行,然后首先将它们保存在 cookie 中,然后检索它们。 假设我的数据库中有一个包含多行的表,例如 4 列。 我该怎么做。 这是我当前的代码。 任何想法谢谢

<html>
  <body>
    <?php
error_reporting(0);
include("config.php");
$quer= "SELECT*FROM ".$db_table." ";
$query=mysqli_query($connect,$quer)
or die(mysqli_error());
?>
<?php while($row = mysqli_fetch_array($query)):
setcookie("$cookiename", $row, 2 * 24 * 60 * 60 * 1000);
//i do not know how can i retrieve columns now
?>
 <?php endwhile;?> 
</body>
</html>

在你的例子中,mysqli_fetch_array() 函数返回一个多维数组,这意味着你应该引用 $row 变量,例如:

$row[0][0] // 1st row, 1st column
$row[2][4] // 3rd row, 5th column

您也可以将数据作为关联数组获取,请查看 http://php.net/manual/en/mysqli-result.fetch-array.php

下面是一个示例:

$cookie_name="cook";
setcookie($cookie_name, $row['key'],2 * 24 * 60 * 60 * 1000), "/");

查看此内容以获取更多信息:setcookie

如果您真的想要/需要将整行保存在 cookie 中,您可以将数组$row打包在一个字符串中,例如 JSON :

//modified example from @Satty
$cookie_name="cook";
setcookie($cookie_name, json_encode($row),2 * 24 * 60 * 60 * 1000), "/");
//to read the cookie:
if(isset($_COOKIE[$cookie_name]))
    $row_from_cookie = json_decode($_COOKIE[$cookie_name]);

如果存在某个 caracter,您可以确定它不存在于您的数据中,因此它可以用作分隔符(例如。'";'")您还可以使用 Implode 和 explode 将整个数组打包在一个字符串中。

但是,如果某些列是可以包含任何字符的任何类型的列,我就不会这样做,因为数据中总会有一个您没有预料到的字符(例如,如果您只存储名称,您可能会假设没有人在他的名字中有一个分号,但仍然有可能有人在输入字段中输入分号)。