这是我的代码
<?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
我已经尝试过各种方法来解决它,但它仍然显示此错误。
答案 0 :(得分:1)
您尚未在查询中引用该课程:
echo $q="select r_name,prep_time,cook_time,ingredient,`procedure` from recipe where course='$course'";
此外,procedure
是MySQL中的保留关键字,您需要用反引号引用它。
答案 1 :(得分:1)
答案 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;屏幕)