在我的服务器上发生了一件奇怪的事。
通常,当脚本执行mysql_query($query)时,如果事先成功地调用了mysql_connect(),它就能工作。
现在,它的工作时间不超过一半。现在,我突然不得不编辑整个购物车值的mysql_query调用,以包含以前可选的DB链接。换句话说,mysql_query($query, $db_link)现在是代码的样子。
我已经暂时这样做了,以便访问者仍然可以使用该网站,但我真的需要知道什么可能导致这样的事件。
其中一个php.ini文件中是否存在某种可能会导致这种情况的设置?我知道这件事发生的时候我没有碰他们,当时我是唯一一个登录到服务器上的人(据我所知)。
发布于 2013-07-29 04:50:47
在没有连接参数的情况下调用mysql_query()将使用最近建立的连接。因此,只要您只连接到一个数据库,您就不会看到任何问题。
来自医生们
如果未指定链接标识符,则假定mysql_connect()打开的最后一个链接。如果没有找到这样的链接,它将尝试创建一个链接,就好像mysql_connect()是在没有参数的情况下调用的。如果没有找到或建立连接,则会生成E_WARNING级别错误。
如果您添加或包含了一些连接到不同数据库的新代码--例如,一个命中跟踪器,或者一个分析工具--那么这可能会破坏您现有的代码,因为它会建立另一个mysql连接--而在建立新连接之后发生的任何查询现在都将使用错误的连接。
即使额外的代码编写正确,并且总是使用自己的连接标识符,也会发生这种情况--它不会意外地使用您的连接,但是您的代码仍然会意外地使用它的连接。
为了安全地使用mysql_query(),您确实需要跟踪数据库连接,并在每个查询中使用它。
如果您正在对所有的mysql_*调用进行更改,请考虑切换到mysqli。mysql_*函数被废弃,不再支持被弃用。mysqli扩展几乎可以是一个插入替代,并且还提供了对诸如准备语句等特性的支持。
PDO扩展是另一种可能的替代,但是当从使用mysql_*切换时需要更多的重写。
https://stackoverflow.com/questions/17915230
复制相似问题