mysql_fetch_assoc()要求参数1为resource,给定错误为布尔值


mysql_fetch_assoc() expects parameter 1 to be resource, boolean given error

可能重复:
PHP错误:mysql_fetch_array()要求参数1为资源,给定为布尔值

我正在编写一个php和mysql程序,在数据库中添加和检索facebook应用程序id和机密。但我得到了以下错误。我的链接是http://freegiveaway.info/new/manageApp.php.btw我的数据库已成功连接。

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, 
boolean given in /home/free/public_html/new/manageApp.php 

我的php包含以下代码

$flag = $_POST['flag'];
        $key = $_POST['key'];
        $secret = $_POST['secret'];
        $deleteApp=$_POST['deleteApp'];
        $appN=$_POST['appN'];
    $db = mysql_connect("localhost", "free_1", "password");
    mysql_select_db("facefunv_chuck", $db);    
    $app = mysql_query("SELECT * FROM tsp ORDER BY n",$db);
        while ($apps = mysql_fetch_assoc($app)){

在($apps=mysql_fetch_assoc($app)){行出现错误

我的sql文件在下面

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Database: `facefunv_chuck`
--
-- --------------------------------------------------------
--
-- Table structure for table `tsp`
--
CREATE TABLE IF NOT EXISTS `tsp` (
  `n` int(11) NOT NULL AUTO_INCREMENT,
  `id` text NOT NULL,
  `secret` text NOT NULL,
  `restricted` int(11) NOT NULL,
  `banned` int(11) NOT NULL,
  PRIMARY KEY (`n`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=40 ;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

您正在使用mysql_select_db将数据库名称更改为"auto"。我想没有一个名为auto的数据库带有表tsp。因此,结果$app为null,您不能对null调用fetch。

mysql_query()在出现错误时返回FALSE,因此您的查询失败,并且仍在尝试从中提取行。

尝试先检查返回值:

$app = mysql_query("SELECT * FROM tsp ORDER BY n",$db);
if (!$app) {
    die("Query failed: " . mysql_error());
}
while (($apps = mysql_fetch_assoc($app)) !== false) {
   //...
}
简而言之,如果选择成功,mysql_query()将返回一个资源,否则返回FALSE。您应该检查代码中的错误。

可能有几个原因,但最明显的一个原因是连接到数据库和mysql_select_db()数据库,即试图从表中选择数据的数据库"auto"。根据您的转储,该数据库实际上被称为"facefunv_chuck",而不是"auto"。