Php &引用;警告:mysql_query():提供的参数不是有效的mysql链接";-为什么?

Php &引用;警告:mysql_query():提供的参数不是有效的mysql链接";-为什么?,php,mysql,Php,Mysql,我的代码怎么了?我一直收到以下错误:警告:mysql\u query():提供的参数不是第4行functions.php中的有效mysql链接资源 读取数据库时出错 function gameTableCheck($gn) { $result = mysql_query("SHOW TABLES LIKE '$gn'",$db) or die ('error reading database'); //This is line 4 if (mysql_num_rows ($

我的代码怎么了?我一直收到以下错误:
警告:mysql\u query():提供的参数不是第4行functions.php中的有效mysql链接资源
读取数据库时出错

function gameTableCheck($gn) 

{

    $result = mysql_query("SHOW TABLES LIKE '$gn'",$db) or die ('error reading database'); //This is line 4
    if (mysql_num_rows ($result)>0) {
        return true;
    } else {
        return false;
    }
}

if( gameTableCheck($page) === false ) {
        echo "MAO";
        die();
    }

$db
不是函数内部的局部变量
gameTableCheck
,您需要添加一个
全局$db语句。

我认为$db没有正确初始化。您要做的是使用
mysql\u选择\u db
如下:

<?php
$host = "localhost"; //database location
$user = "user"; //database username
$pass = "pass"; //database password
$db_name = "thename"; //database name

//database connection
$link = mysql_connect($host, $user, $pass);
mysql_select_db($db_name);

//sets encoding to utf8
mysql_query("SET NAMES utf8");
?>

(片段)

如果出于某种原因确实需要在每个查询上指定一个数据库变量,请尝试查找:

  • $db变量设置正确

  • $db变量在您的函数范围内。如果需要或将其作为参数传递给函数


我假设
$db
不是有效的数据库连接。 你事先连接到数据库了吗?
$db
是否在该函数的作用域中可用


在调用函数之前,您可以使用
global$db
使其具有全局作用域。

问题在于:
mysql\u查询(“显示像“$gn'”、$db这样的表)

范围中没有
$db


如果您仅使用一个数据库连接,并且已经连接,则可以删除此参数。

您忘记打开到数据库的连接(代码中为db)并在对其执行查询之前选择一个数据库。错误表明代码中的$db变量不是有效的资源,因此未定义它


请参阅:和

要查找错误,可以尝试放置mysql\u error()


gameTableCheck()
函数不知道
$db
变量是什么。由于PHP没有动态作用域,您必须在函数内将变量声明为
global
(如果它是全局变量),或者在函数调用中将其作为参数传递。

或者(更好的做法是)将$db作为参数传递给函数这当然是假设全局作用域中存在
$db
$result = mysql_query("SHOW TABLES LIKE '$gn'",$db) or exit( mysql_error() );