2011-12-19 152 views
-2

Possible Duplicate:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result错误警告:mysql_fetch_assoc()在PHP

在db.php中我有:

<?php 
class connect { 

    private $host = "localhost"; 
    private $user = "root"; 
    private $pass = ""; 
    private $database = "databasename"; 
    private $connect = null; 

    function connect() { 
     $this->connect = mysql_connect($this->host, $this->user, $this->pass) or die("Can't connect database"); 
     mysql_select_db($this->database, $this->connect); 
    } 

    function getData() { 
     $data = array(); 
     $sql = 'Select * From test'; 
     $query = mysql_query($sql); 
     while($row = mysql_fetch_assoc($query)) { 
      $data[] = array($row['id'], $row['name']); 
     } 
     return $data; 
    } 

} 
?> 

在index.php文件,我有:

<?php 
include 'db.php'; 
$connect = new connect(); 
$connect->connect(); 
$data = $connect->getData(); 
$str = ''; 
foreach ($data as $dt) { 
    $str .= $dt[1]; 
} 
echo $str; 
?> 

我收到以下错误: =>error: <b>Warning</b>: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource from db.php。

我在做什么错?

+0

我试图复制粘贴你的代码,没有发现错误!请检查您的数据库名称,数据库密码,数据库用户或表名。 – 2011-12-19 03:57:34

+0

作为一个经验法则,你不应该命名与你的类相同的局部变量:'connect'。将'private $ connect'更改为(例如)'private $ connection'。然后你应该在你的查询中使用这个变量:$ query = mysql_query($ sql,$ this-> connection); – dar7yl 2011-12-19 11:40:58

回答

6

尝试找出什么是错误:

function getData() { 
    $data = array(); 
    $sql = 'Select * From test'; 
    $query = mysql_query($sql); 
    if(!$query) 
    { 
    echo 'Error: ' . mysql_error(); /* Check what is the error and print it */ 
    exit; 
    } 

    while($row = mysql_fetch_array($query)) { /* Better use fetch array instead */ 
     $data[] = array($row['id'], $row['name']); 
    } 
    return $data; 
} 
+2

不知道为什么这是downvoted。查询有些问题,否则会返回结果资源对象。唯一的办法就是显示错误信息。 – spatel 2011-12-19 03:54:23

+0

我敢打赌,错误消息是我提到的两件事之一:P – Jessedc 2011-12-19 03:59:17

2

该错误是告诉你,通过$query = mysql_query($sql);执行的查询将返回一个错误。它不返回零结果,它返回一个错误,这表明您的数据库名为'databasename'或名为'test'的表不存在。

0

这听起来像没有结果从查询返回或一般查询错误,查询中的列和表是否存在,并且是您的数据库连接吗?