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

问题描述:

我的代码有什么问题?我不断收到此错误:Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in functions.php on line 4 error reading database“警告:mysql_query():提供的参数不是有效的MySQL-Link” - 为什么?

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一个局部变量,你需要在函数的顶部添加global $db;声明。

+2

或(更好的IMO)将$ db作为参数传递给函数 – fvu 2010-01-05 11:37:30

+1

这当然假设在全局范围内有一个“$ db”。 – 2010-01-05 11:38:59

+1

我忘了,嘿,傻我! – Strawberry 2010-01-05 12:03:58

那么我会说$ 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如果需要,或将它传递给函数作为参数

我认为$db是不是有效的数据库连接。 您是否事先连接到数据库?该函数的范围中是否有$db

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

的问题是在这里:mysql_query("SHOW TABLES LIKE '$gn'",$db)

有范围没有$db

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

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

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

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

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

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