gpt4 book ai didi

php - 警告 : mysql_query(): 3 is not a valid MySQL-Link resource

转载 作者:IT老高 更新时间:2023-10-28 23:49:35 24 4
gpt4 key购买 nike

我遇到了这个奇怪的错误,我不知道它是从哪里来的:

警告:mysql_query(): 3 在 (...) 中不是有效的 MySQL-Link 资源

3 怎么了?我不明白。有没有人自己遇到过这个错误?

最佳答案

PHP 使用资源作为特殊变量来保存到外部对象的链接,例如文件和数据库连接。每个资源都有一个整数 ID。 ( Documentation )

失败的连接

如果数据库连接失败,您可能会收到“指定的变量不是有效的 MySQL-Link 资源”错误,正如 Dan Breen 提到的,因为应该保存资源的变量为空。

$link = mysql_connect('localsoth','baduser','badpass'); // failed connection
$result = mysql_query("SELECT 1", $link); // throws error

由于您在错误消息中获得了特定的资源 ID,因此数据库连接可能由于某种原因意外关闭。您的程序仍然有一个带有资源 ID 的变量,但外部对象不再存在。这可能是由于在调用mysql_query 之前某处调用了mysql_close(),或者是关闭连接的外部数据库错误。

$link = mysql_connect();
mysql_close($link);
// $link may still contain a resource identifier, but the external object is gone
mysql_query("SELECT 1", $link);

重用连接

mysql 扩展和 mysql_connect() 的一个问题是,默认情况下,如果您在连续调用中传递相同的参数,它将重新使用现有连接而不是创建一个新连接(Documentation ).这可以通过将 true 传递给 $new_link 参数来解决。
我自己在一个测试系统上遇到过这种情况,其中生产中两个独立数据库的数据被合并到一个测试服务器上,并且在测试 mysql_xxx() 函数调用时相互跳过并破坏了系统。

$link1 = mysql_connect('localhost','user','pass'); // resource id 1 is given
$link2 = mysql_connect('localhost','user','pass'); // resource id 1 is given again
mysql_close($link2); // the connection at resource id 1 is closed
mysql_query("SELECT 1", $link1); // will fail, since the connection was closed

使用$new_link:

$link1 = mysql_connect('localhost','user','pass'); // resource id 1 is given
$link2 = mysql_connect('localhost','user','pass', true); // resource id 2 is given
mysql_close($link2); // the connection at resource id 2 is closed
mysql_query("SELECT 1", $link1); // the connection at resource id 1 is still open

编辑:
顺便说一句,如果可能的话,我建议使用 MySQLi 扩展名或 PDO。 MySQL 扩展已经很老了,不能利用 MySQL 版本 4.1.3 之后的任何功能。查看 http://www.php.net/manual/en/mysqli.overview.php 以了解有关三个接口(interface)之间差异的一些详细信息。

关于php - 警告 : mysql_query(): 3 is not a valid MySQL-Link resource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2851420/

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