【发布时间】:2013-06-27 11:39:46
【问题描述】:
我收到此错误:
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) or die(mysql_error());” 但我在任何地方都看不到问题。
我的尝试:
- 我尝试过在第二个连接上使用和不使用“true”, 似乎在任何地方都没有影响。
- 回显 $connection 和 $gameDB_connection 没有显示任何内容,
- 在 $connection 上使用 var_dump 显示“resource(9) of type (mysql link)”
- 从 mysql_query 中删除 $connection 使其连接到 其他数据库(gameDB_connection),我得到一个错误,该表 不存在(它不在那个数据库中)。
- 似乎在查询中添加/更改/删除反引号 (`) 对错误没有影响
- 变量 $gID 回显是正确的,所以它不为空(它的 1001 在 本例)
- 如果我以实际的 sql 形式(而不是通过 php)运行 SELECT 部分, 它正确地列出了它们
- Connection.php在其他地方使用(一页读 同时从两个数据库中)成功。其他地方没有错误
有人知道怎么回事吗?
【问题讨论】:
-
Please, don't use mysql_* functions for new code. 它们不再被维护并被正式弃用。看到 red box 了吗?您可以改用PDO 或MySQLi - this article 可以帮助您决定使用哪个。
-
这真的是您的
Connection.php和测试文件的全部内容吗?您能仅在此处显示的行重现问题吗? -
另外,这与您的问题无关 - 但没有理由使用像
"$gameDB_server"这样的值 - 您可以只使用变量本身而不用引号括起来:$gameDB_server -
那是 Connection.php 的 100%(除了它之前和之后的 ),那是函数的 100%。它被调用并传递了变量 $gID (似乎成功传递,因为它正确回显)。哦,我正在使用 PHP 版本 5.2.17 以防万一
-
当你说函数..你的意思是你正在调用的文字函数吗?
$connection是一个全局变量,除非你在函数中使用global $connection,否则它在函数中不可用。