gpt4 book ai didi

PHP 已停止隐式检测 MySQL 数据库链接

转载 作者:可可西里 更新时间:2023-11-01 07:37:24 27 4
gpt4 key购买 nike

在我的一台服务器上发生了一件奇怪的事情。

通常,当脚本执行 mysql_query($query) 时,如果事先成功调用了 mysql_connect(),它就会工作。

现在,它有一半以上的时间都不起作用。现在我突然不得不编辑整个购物车的 mysql_query 调用,以包括以前可选的数据库链接。换句话说,mysql_query($query, $db_link) 现在是代码的样子。

我暂时这样做是为了让访问者仍然可以使用该网站,但我真的需要知道是什么导致了这样的事件。

在 php.ini 文件之一中是否有某些设置可能以某种方式更改会导致此问题?我知道发生这种情况时我没有碰他们,而且当时只有我登录到服务器(据我所知)。

最佳答案

在没有连接参数的情况下调用 mysql_query() 将使用最近建立的连接。因此,只要您只连接到一个数据库,就不会出现任何问题。

来自 the docs :

If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.

如果您添加或包含一些连接到不同数据库的新代码 - 例如,可能是一个点击跟踪器或一个分析工具 - 那么这可能会破坏您现有的代码,因为它建立了另一个 mysql 连接 - 以及您的任何在建立新连接后发生的查询现在将使用错误的连接。

即使额外的代码编写得当并且总是使用它自己的连接标识符,这也会发生——它不会有意外使用你的连接的问题,但你的代码仍然会意外地使用它的连接。

要安全地使用 mysql_query(),您确实需要跟踪数据库连接,并在每个查询中使用它。


综上所述 - 如果您无论如何都要对所有 mysql_* 调用进行更改,请考虑切换到 mysqli . mysql_* 函数已弃用,no longer supported . mysqli扩展几乎可以直接替换,并且还提供对准备语句等功能的支持。

PDO extension 是另一种可能的替代方法,但在从使用 mysql_* 切换时需要更多的重写。

关于PHP 已停止隐式检测 MySQL 数据库链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17915230/

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