当前位置: 首页 > 面试题库 >

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

花和宜
2023-03-14
问题内容

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

Warning: mysql_query(): 3 is not a valid MySQL-Link resource in (...)

3是怎么回事?我不明白 有人亲自经历过此错误吗?


问题答案:

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

连接失败

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

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

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

$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,以获取有关这三个界面之间差异的一些详细信息。



 类似资料:
  • 问题内容: 我收到此错误: 这是我的Connection.php: 这是我的功能: 错误出现在“ $ findResult = mysql_query($ findQuery,$ connection)或die(mysql_error());”上 但我在任何地方都看不到问题。 我尝试过的 我尝试过在第二个连接上使用和不使用“ true”,似乎在任何地方都没有改变。 回显$ connection和$

  • 问题内容: 这个问题已经在这里有了答案 : 警告:mysql_fetch_array():提供的参数不是有效的MySQL结果 (6个答案) 7年前关闭。 当我运行以下php代码时,即使Practice_calendar_times中有多行,while循环也只会运行一次。 在网页上,我收到一条打印的警告消息:“警告:mysql_fetch_array():提供的参数不是/rmounts/vol0-n

  • 我当前遇到以下脚本的问题。在执行脚本时,我确实收到消息“连接正常!”但是,我还收到以下消息: 警告:mysql_query()希望参数2是/opt/lampp/htdocs/worldofclucky中给定的资源和对象。net/scripts/auth。php第11行 警告:mysql_fetch_array()要求参数1为资源,在/opt/lampp/htdocs/worldofclucky中为

  • 问题内容: 大家好,只是想解决这个烦人的问题。这是我的摘录。 我检查了与我的错误类似的其他问题,但到目前为止,我无法解决它。 任何帮助深表感谢。:) 问题答案: 您应该将代码分成更多行以处理这些错误或特殊情况。将返回零到n行,如果发生则返回错误。因此,返回的 资源 仅在非错误查询中为true。这可用于处理如下情况。 首先建立并执行查询,然后再处理 资源 。 您可能会使用以下内容来确定发生错误的情况

  • 告警资源即宿主机、云账号等影响系统正常使用的资源因为告警策略发生告警,等待处理的未恢复系统资源告警列表。 告警资源即宿主机、云账号等影响系统正常使用的资源因为告警策略发生告警,等待处理的未回复系统资源告警列表。当此类告警发生时,用户可在界面右上角查看到告警资源数量等。用户通过资源匹配的告警策略排查资源的异常告警原因,当告警恢复后,则对应的告警资源将不再显示在告警列表。 入口:在云管平台单击左上角导

  • 问题内容: 我在本地WAMP机器上开发了一个小型CMS。 将项目导出到主机后,将出现以下问题 警告:mysql_fetch_assoc():提供的参数不是/homepages/36/d288053636/htdocs/MYWEBSITE/admin/index.php在第44行上的有效MySQL结果资源 警告:无法修改标头信息-已在/ homepages / 36 / d288053636 / h