我一直在检查这个错误,但没有针对我的代码的具体解决方案。我已经使用mysqli_connect()调用连接到了mysql服务器。然后将连接结果传递给$_SESSION,以使其在整个网站上可用-就像我在所有其他项目中通常所做的那样,但由于某些原因,我一直收到错误:
"mysqli_query(): Couldn't fetch mysqli"下面是生成错误的代码:
if(!isset($_GET['sortBy']))
{
$listSQL = "SELECT * FROM '".$_SESSION['WorkTable']."'";
}
else
{
$listSQL = "SELECT * FROM '".$_SESSION['WorkTable']."' where ".$_GET['sortBy']."='".$_GET['sortBy']."'";
}
//get Contacts From DB
if(!empty(mysqli_query(@$_SESSION['IMWEDBcxn'],$listSQL)))这是connection类的代码...
if(!empty($cxn))
{
$_SESSION['WorkTable'] = $dbTable;
$_SESSION['IMWEDBcxn'] = $cxn;
}我有什么遗漏的吗?
发布于 2014-11-25 20:47:34
正如Ivan Solntsev所说,不要在用户的会话中存储连接处理程序,原因有两个:
1-处理程序无法序列化。
2-您存储在用户会话中的任何内容(使用$_SESSION)都将仅在该用户的作用域下可用。我建议你阅读更多关于会话和PHP的知识,$_SESSION不是一种通过会话来存储数据的方法。
所以做一些类似这样的事情:
$connect = mysqli_connect("...");
$_SESSION["dbconnection"] = $connect;
mysqli_query($_SESSION["dbconnection"], $query);是错误的!
如果您想要一个持久连接,为了避免在每次DB查询时重新连接,请阅读MySQLi和持久连接:http://php.net/manual/en/mysqli.persistconns.php。如果您运行的PHP版本低于5.3,我建议您使用PDO (不管您使用的是哪个PHP版本,我都会推荐它)。
https://stackoverflow.com/questions/27126994
复制相似问题