我一直在检查此错误,没有特定于我的代码的解决方案。我已使用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)))
这是连接类代码......
if(!empty($cxn))
{
$_SESSION['WorkTable'] = $dbTable;
$_SESSION['IMWEDBcxn'] = $cxn;
}
我在这里缺少什么?
答案 0 :(得分:2)
正如Ivan Solntsev所述,出于以下两个显而易见的原因,请不要在用户会话中存储连接处理程序:
1-处理程序无法序列化。
2-您在用户会话中存储的任何内容(使用$_SESSION
)只能在该用户的范围内使用。我建议您阅读有关会话和PHP的更多信息,$_SESSION
不是通过会话存储数据的方法。
做类似的事情:
$connect = mysqli_connect("...");
$_SESSION["dbconnection"] = $connect;
mysqli_query($_SESSION["dbconnection"], $query);
错了!
如果您想要持久连接,为避免重新连接每个数据库查询,请阅读MySQLi和持久连接:http://php.net/manual/en/mysqli.persistconns.php。如果您使用的是5.3版本的PHP版本,我建议您使用PDO(无论您使用哪种PHP版本,我都会推荐使用PDO。)