我收到此错误:
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource
这是我的Connection.php:
$userDB_server = "";
$userDB_user = "";
$userDB_password = "";
$userDB_database = "";
$connection = mysql_connect("$userDB_server","$userDB_user","$userDB_password") or die ("Unable to establish a DB connection");
$userDB = mysql_select_db("$userDB_database", $connection) or die ("Unable to establish a DB connection");
$gameDB_server = "";
$gameDB_user = "";
$gameDB_password = "";
$gameDB_database = "";
$gameDB_connection = mysql_connect("$gameDB_server","$gameDB_user","$gameDB_password", true) or die ("Unable to establish a DB connection");
$gameDB = mysql_select_db("$gameDB_database", $gameDB_connection) or die ("Unable to establish a DB connection");
这是我的功能:
require_once('Connection.php');
$findQuery = sprintf("SELECT * FROM `Keys` WHERE `ID` = '$gID'");
$findResult = mysql_query($findQuery, $connection) or die(mysql_error());
$resultRow = mysql_fetch_assoc($findResult) or die(mysql_error());
错误出现在“ $ findResult = mysql_query($ findQuery,$
connection)或die(mysql_error());”上 但我在任何地方都看不到问题。
我尝试过的
有人知道怎么了吗?
根据注释,听起来问题似乎是由于require_once()
在函数内部使用引起的。
正在发生两件事之一。要么:
Connection.php
在其他地方,所以当你的功能,它实际上并不包括在内,因为在中.. 曾经 的一部分require_once
。要么…
问题在于,当第一次包含该文件时(假定是从该函数中来的),该$connection
变量在函数作用域中创建,并且像其他任何函数变量一样,在该函数的末尾消失了。当您第二次调用该函数时,包含不会发生,因为您正在使用require_once
。
您可能可以通过调用require()
而不是来解决此问题require_once()
,但这最终将在您每次调用该函数时重新连接到数据库-
这是很多不必要的开销。只需将include移到函数外部,然后将连接传递到函数中,或将其用作全局变量,这将更加清洁。
看起来像这样:
require_once('Connection.php');
function getResult() {
global $connection;
$findQuery = "SELECT * FROM `Keys` WHERE `ID` = '$gID'";
$findResult = mysql_query($findQuery, $connection) or die(mysql_error());
$resultRow = mysql_fetch_assoc($findResult) or die(mysql_error());
}
综上所述,此代码存在两个主要问题。
mysql_*
功能已被弃用,并将很快从新版本的PHP中删除。有关更多详细信息,请参见此问题:为什么我不应该在PHP中使用mysql_ *函数?实际上,切换到类似mysqli_*
函数之类的东西实际上并不难-有一组非对象的函数与您现在所使用的几乎相同。
mysql_real_escape_string()
(或mysqli_real_escape_string()
),但是更好的解决方案是研究准备好的语句。您可以在此处找到有关准备好的语句的更多信息:如何防止PHP中的SQL注入?问题内容: 我收到了这个奇怪的错误,我不知道它是从哪里来的: 3是怎么回事?我不明白 有人亲自经历过此错误吗? 问题答案: PHP使用资源作为特殊变量来保存到外部对象的链接,例如文件和数据库连接。每个资源都有一个整数ID。(资料) 连接失败 如果数据库连接失败,您可能会收到“指定的变量不是有效的MySQL-Link资源”错误,如Dan Breen所述,因为应该保存该资源的变量为null。 由于在错
问题内容: 这个问题已经在这里有了答案 : 警告:mysql_fetch_array():提供的参数不是有效的MySQL结果 (6个答案) 7年前关闭。 当我运行以下php代码时,即使Practice_calendar_times中有多行,while循环也只会运行一次。 在网页上,我收到一条打印的警告消息:“警告:mysql_fetch_array():提供的参数不是/rmounts/vol0-n
问题内容: 大家好,只是想解决这个烦人的问题。这是我的摘录。 我检查了与我的错误类似的其他问题,但到目前为止,我无法解决它。 任何帮助深表感谢。:) 问题答案: 您应该将代码分成更多行以处理这些错误或特殊情况。将返回零到n行,如果发生则返回错误。因此,返回的 资源 仅在非错误查询中为true。这可用于处理如下情况。 首先建立并执行查询,然后再处理 资源 。 您可能会使用以下内容来确定发生错误的情况
问题内容: 我在本地WAMP机器上开发了一个小型CMS。 将项目导出到主机后,将出现以下问题 警告:mysql_fetch_assoc():提供的参数不是/homepages/36/d288053636/htdocs/MYWEBSITE/admin/index.php在第44行上的有效MySQL结果资源 警告:无法修改标头信息-已在/ homepages / 36 / d288053636 / h
问题内容: 这个问题已经在这里有了答案 : 7年前关闭。 可能重复: mysql_fetch_array()期望参数1为资源,在select中给出布尔值 我不断收到错误警告:mysql_fetch_array():提供的参数不是我网页上第40行中的有效MySQL结果,我不知道为什么..请帮助我。背景:该脚本将我的数据库表命名为yname,username,password,date,comment
我当前遇到以下脚本的问题。在执行脚本时,我确实收到消息“连接正常!”但是,我还收到以下消息: 警告:mysql_query()希望参数2是/opt/lampp/htdocs/worldofclucky中给定的资源和对象。net/scripts/auth。php第11行 警告:mysql_fetch_array()要求参数1为资源,在/opt/lampp/htdocs/worldofclucky中为