“警告:mysql_query():提供的参数不是有效的MySQL-Link” - 为什么?

时间:2010-01-05 11:34:17

标签: php mysql

我的代码出了什么问题?我一直收到此错误:Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in functions.php on line 4 error reading database

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();
    }

7 个答案:

答案 0 :(得分:4)

$db不是函数gameTableCheck中的局部变量,您需要在函数顶部添加global $db;语句。

答案 1 :(得分:4)

问题在于:mysql_query("SHOW TABLES LIKE '$gn'",$db)

范围内没有$db

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

答案 2 :(得分:1)

好吧,我会说$ db没有正确初始化。你想要做的是使用mysql_select_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");
?>

(摘录via

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

  • 正确设置$ db变量

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

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

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

请参阅:http://php.net/manual/en/function.mysql-query.phphttp://www.php.net/manual/en/function.mysql-connect.php

答案 5 :(得分:0)

找到错误,你可以尝试把mysql_error()

$result = mysql_query("SHOW TABLES LIKE '$gn'",$db) or exit( mysql_error() );

答案 6 :(得分:0)

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