gpt4 book ai didi

php - PDO 声明与工作 session ?

转载 作者:行者123 更新时间:2023-12-01 00:05:09 24 4
gpt4 key购买 nike

$s = &$_SESSION;

我在 prepare 语句中使用 session 变量时遇到下面提到的错误。

//$s是 session 变量

我的查询是:

$s['sQuery'] = 'SELECT * FROM `courses` WHERE (CONVERT(`title` USING utf8) = :search 
OR CONVERT(`description` USING utf8) = :search OR CONVERT(`duration` USING utf8) = :search
OR CONVERT(`fees` USING utf8) = :search OR CONVERT(`pre_requisites` USING utf8) = :search)
LIMIT '.$s['limitInc'].', '.$s['limit'];

$s['rQuery'] = $conn->prepare($s['sQuery']);

$s['rQuery']->bindValue(':search',$s['sAll'],PDO::PARAM_STR);
// $s['All'] has post value by user

$s['rQuery']->execute();

我收到此错误消息。

Fatal error: Uncaught exception 'PDOException' with message 'You cannot serialize or unserialize PDOStatement instances' in [no active file]:0 Stack trace: #0 [internal function]: PDOStatement->__sleep() #1 {main} thrown in [no active file] on line 0

最佳答案

问题是 - 无论出于何种原因 - 您正在尝试将 PDOStatement 对象存储在 $_SESSION 数组中。除非您指定了自定义保存处理程序,否则存储在 session 中的对象将在 session 保存时序列化并在 session 加载时反序列化。因此,存储在 session 中的对象必须实现 Serializable 接口(interface),而 PDOStatement 则没有。

PDOStatement 不仅没有实现可序列化接口(interface),还实现了 __sleep() 方法,PHP 引擎在序列化时调用该方法,并抛出异常它的。 (这是您看到的错误)。这句话的意思只是告诉你不要那样做 ;)

关于php - PDO 声明与工作 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15878817/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com