警告:mysql_fetch_assoc()期望参数1是资源,布尔值在

时间:2013-12-06 11:43:42

标签: php mysql

每次运行代码时都会出现此错误,我尝试通过其他类似的线程,但它没有帮助。我是新手

        $count=3;
            $db = new mysqli ('localhost', 'root', '', 'test');

        $selectSQL='SELECT * FROM coll_mark WHERE univ="'.$_POST['univ'].'" AND '.$brachTxt.'<="'.$_POST['perc'].'"AND '.$brachTxt.'!=""  ORDER BY '.$brachTxt.' DESC LIMIT '.$count;       
        $queryset='';
        $queryset=mysql_query($selectSQL);
        while($row = mysql_fetch_assoc($queryset)) 
        {
        echo('<tr><td id="ColgNames">'.$row['name'].'</td><td align="center">'.$row[$brachTxt].'</td></tr>');
        }

我还检查了查询结构是否正确,但查询工作正常。

4 个答案:

答案 0 :(得分:4)

您的查询很可能失败,因此mysql_query($selectSQL);返回false。一个简单的如果要解决这个问题

$queryset=mysql_query($selectSQL);
if ($queryset) {
    while($row = mysql_fetch_assoc($queryset)) {
    //code
    }
}

您的查询容易受到SQL注入攻击!另请注意,mysql_*函数为officially deprecated,因此不应在新代码中使用。您可以使用PDO或MySQLi。有关详细信息,请参阅this answer on SO

答案 1 :(得分:3)

尝试这样,

$count=3;
$db=mysql_connect('localhost','root','');
if(!$db) {
    die('Could not connect: '.mysql_error());
}
$connection_string=mysql_select_db('test',$db);
$selectSQL='SELECT * FROM coll_mark WHERE univ="'.$_POST['univ'].'" AND '.$brachTxt.'<="'.$_POST['perc'].'"AND '.$brachTxt.'!="" ORDER BY '.$brachTxt.' DESC LIMIT '.$count;       
$queryset=mysql_query($selectSQL);
$num=mysql_num_rows($queryset);
if(0==$num) {
    echo "No record";
    exit;
} else {
    while($row=mysql_fetch_assoc($queryset)) {
        echo('<tr><td id="ColgNames">'.$row['name'].'</td><td align="center">'.$row[$brachTxt].'</td></tr>');
    }
}

答案 2 :(得分:1)

您正在声明与数据库的mysqli连接,然后使用mysql个函数。

请改为尝试:

$db = mysql_connect('localhost', 'root', '', 'test');

请注意mysql functions are deprecated as of PHP 5.5.0, and will be removed in the future.

答案 3 :(得分:1)

函数 mysql_query 在错误时返回失败。检查您的SQL查询语法。

btw,语法错误在这里......之后!=运算符......

...$brachTxt."!='"  ORDER BY ".$brachTxt."...