warning- mysql_fetch_array()期望参数1是资源

时间:2014-03-15 10:27:08

标签: php mysql

这是我的代码

<?php
    mysql_connect('localhost','root','');
    $conn=mysql_select_db('project');

    $course="snacks";
    echo $q="select r_name,prep_time,cook_time,ingredient,procedure from recipe where course=$course";
    $res=mysql_query($q);


    while($disp=mysql_fetch_array($res))
    {
        echo "$disp[r_name]</br>";
        echo "$disp[ingredient]</br>";
        echo "$disp[procedure]</br>";   
    }

?>  

错误是

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\web\course.php

我已经尝试过各种方法来解决它,但它仍然显示此错误。

5 个答案:

答案 0 :(得分:1)

您尚未在查询中引用该课程:

    echo $q="select r_name,prep_time,cook_time,ingredient,`procedure` from recipe where course='$course'";

此外,procedure是MySQL中的保留关键字,您需要用反引号引用它。

答案 1 :(得分:1)

procedure是mysql保留关键字试试用它周围的反引号

    `procedure`

reserved keywords

答案 2 :(得分:0)

尝试在$ course变量中添加单引号。

$q="select r_name,prep_time,cook_time,ingredient,procedure from recipe where course='$course'";

答案 3 :(得分:0)

你的mysql语句没有返回任何数据,并将$ res设置为false

尝试:

"select r_name,prep_time,cook_time,ingredient,procedure from recipe where course='$course'"

我刚刚在$ course附近添加了'。

答案 4 :(得分:0)

首先,尝试切换到mysqli,因为mysql已经过时了。

话虽如此,触发器并不难找到。 fetch_assoc()函数接受一个资源,一个作为数据库中的restult发送。

所以你向上走一步,查询。如果您阅读documentation on mysql_query(),则会发现它返回资源,或者在失败时返回false( - &gt; boolean)。

正如已经指出的那样,错误是您使用procedure 。在mysql中有一个reserved keyword你不能像那样使用它。你必须添加反引号(`)来逃避它。 另一个错误是$course需要用单引号包装。在查询中,所有字符串都必须用单引号括起来。

你怎么能自己找到这个?通过将您的查询更改为以下内容:

$res = mysql_query($q) or die(mysql_error());

这将导致您的屏幕出现错误,这会告诉您procedure :) 小旁注:使用die()不是最好的habbits,用自定义函数替换它以对用户产生更大的影响(就像一个漂亮的&#39; oops&#39;屏幕)