mysql_fetch_assoc()期望参数1是资源,布尔给定错误

时间:2012-02-21 18:28:45

标签: php mysql facebook phpmyadmin

  

可能重复:
  PHP Error: mysql_fetch_array() expects parameter 1 to be resource, boolean given

我正在编写一个php和mysql程序,用于在数据库中添加和检索facebook app id和secret。但是我收到以下错误。我的链接是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 */;

3 个答案:

答案 0 :(得分:1)

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) {
   //...
}

答案 1 :(得分:1)

简而言之,mysql_query()如果选择成功则返回资源,否则返回FALSE。您应该在代码中检查该错误。

可能有几个原因,但显而易见的一个是您连接到数据库并mysql_select_db()数据库“auto”,您尝试从表中选择数据。根据您的转储,数据库实际上称为“facefunv_chuck”,而不是“auto”。

答案 2 :(得分:1)

您正在使用mysql_select_db将数据库名称更改为“auto”。我猜不会有一个名为auto的数据库与表tsp。因此结果$ app为null,你不能在null上调用fetch。