2012-02-19 102 views
0

我正在网站上进行教学使用,当我尝试构建一个执行某些逻辑的文件时,我遇到了一个小错误。MySQL资源错误?

基本上,代码是为了获得3个数据值,如果只有数据的第一位存在,它运行x查询,如果第一个和第二个存在它运行y查询,依此类推等等,直到它对GET数据运行8次测试。对于一些背景信息,水平=一类学习水平(IGCSE,IB,A-Levels),学科是一门学科(数学,英语,科学),学校是学校的名称。

数据库结构如下:

'id' INT(11) 
'title' VARCHAR(255) 
'description' VARCHAR(1000) 
'filename' VARCHAR(255) 
'uploader' VARCHAR(255) 
'school' VARCHAR(255) 
'subject' VARCHAR(255) 
'level' VARCHAR(255) 
'downloads' VARCHAR(20) 
'views' VARCHAR(20) 
'helpful' INT(11) 
'nothelpful' INT(11) 
'date' DATE 

而且我运行下面的PHP代码:

<? 
/* 
YYY 
YNY 
YNN 
YYN 
NNN 
NYN 
NNY 
NYY 
*/ 
/* DECLARE VARS */ 
$subject =   $_GET['subject']; 
$level  =   $_GET['lvl']; 
$school  =   $_GET['school']; 
include("connect.php"); 

if($subject!="" && $level!="" && $school!=""){ 
/* GET Notes that have x subject, y level, and z school */ 
$yyyq = mysql_query("SELECT * FROM noteshare_notes WHERE subject='$subject' AND level='$level' AND school='$school' ORDER BY helpful DESC LIMIT 30"); /* quote missed here */ 
while($row=mysql_fetch_array($yyyq)){ 
echo '<span id="topic">[<a href="list.php?subject='.$row['subject'].'&lvl='.$row['level'].'">'.$row['level'].' '.$row['subject'].'</a>]</span> <a href="note.php?id='.$row['id'].'">'.$row['title'].'</a> <span id="usersize"><i>[uploaded by <a href="profile.php?id='.$row['uploader'].'">'.$row['uploader'].'</a>]</i></span><br>'; } 
//yyy 
} 

if($subject!="" && $level!="" && $school==""){ 
/* Get Notes from x Subject and X Level, regardless of school. */ 
$yynq = mysql_query("SELECT * FROM noteshare_notes WHERE subject='$subject' AND level='$level' ORDER BY helpful DESC LIMIT 30"); /* quote missed here */ 
while($row=mysql_fetch_array($yynq)){ 
echo '<span id="topic">[<a href="list.php?subject='.$row['subject'].'&lvl='.$row['level'].'">'.$row['level'].' '.$row['subject'].'</a>]</span> <a href="note.php?id='.$row['id'].'">'.$row['title'].'</a> <span id="usersize"><i>[uploaded by <a href="profile.php?id='.$row['uploader'].'">'.$row['uploader'].'</a>]</i></span><br>'; } 
//yyn 
} 

if($subject!="" && $level=="" && $school==""){ 
/* Get Level before Getting Notes without School */ 
$ynnq = mysql_query("SELECT * FROM noteshare_notes WHERE subject='$subject' GROUP BY level"); 
echo "<center>"; 
while($row=mysql_fetch_array($ynnq)){ 
echo '<a href="list.php?lvl='.$row['level'].'&subject='.$row['subject'].'">'.$row['level'].'</a><br>'; } 
//ynn  
} 

if($subject!="" && $level=="" && $school!=""){ 
/* Get level based on school + subject */ 
$ynyq = mysql_query("SELECT * FROM noteshare_notes WHERE subject='$subject' AND school='$school' GROUP BY level"); 
while($row=mysql_fetch_array($ynyq)){ 
echo '<a href="list.php?lvl='.$row['level'].'&school='.$row['school'].'&subject='.$row['subject'].'">'.$row['level'].'</a><br>'; } 
//yny 
} 

if($subject=="" && $level=="" && $school==""){ 
//Error - Nothing + Nothing + Nothing = Nothing 
//nnn 
} 

if($subject=="" && $level=="" && $school!=""){ 
/* Get Subject First based on School, thus redirecting to previous ynn (reverse clause)*/ 
$nnyq = mysql_query("SELECT * FROM noteshare_notes WHERE school='$school' GROUP BY subject"); 
while($row=mysql_fetch_array($nnyq)){ 
echo '<a href="list.php?subject='.$row['subject'].'&school='.$row['school'].'">'.$row['subject'].'</a><br>'; } 
//nny 
} 

if($subject=="" && $level!="" && $school!=""){ 
/* Get Subjects based on level + school */ 
$nyyq = mysql_query("SELECT * FROM noteshare_notes WHERE level='$level' AND school='$school' GROUP BY subject"); 
while($row=mysql_fetch_array($nyyq)){ 
echo '<a href="list.php?subject='.$row['subject'].'&lvl='.$row['level'].'&school='.$row['school'].'">'.$row['subject'].'</a><br>'; } 
//nyy 
} 

if($subject=="" && $level!="" && $school==""){ 
/* Get Subject based on level */ 
$nynq = mysql_query("SELECT * FROM noteshare_notes WHERE level='$level' GROUP BY subject"); 
while($row=mysql_fetch_array($nyyq)){ 
echo '<a href="list.php?subject='.$row['subject'].'&lvl='.$row['level'].'">'.$row['subject'].'</a><br>'; } 
//nyn 
} 
?> 

道歉,因为它的意见和概率积累,哈哈。

它让我回国与

mysql_fetch_array(): supplied argument is not a valid MySQL result resource 

错误,我不知道如何解决它,我试过很多,很多的事情来解决,没有什么工作。我认为这可能是由于多个AND或数据库中没有30行的事实

有人会知道如何解决这个问题吗?任何答案将是非常有用的:)

干杯!

+0

哪种情况会引发错误?或者所有这些都会导致错误? – Chris 2012-02-19 12:18:08

+0

把下面的代码放在你的'mysql_query',plz:'if(mysql_errno()){echo mysql_error(); }并发布它生成的输出。 – Sirko 2012-02-19 12:18:12

+0

没有错误显示@Sirko :(整个页面死亡 – unicornication 2012-02-19 12:29:30

回答

1

给这2个试一试。你在陌生的地方有单引号。在$学校之后你没有单独的报价,并且在这两种情况下在LIMIT 30之后都有一个单引号。这可能会导致MySQL错误,或至少导致意外的行被选中。

$yyyq = mysql_query("SELECT * FROM noteshare_notes WHERE subject='$subject' AND level='$level' AND school='$school' ORDER BY helpful DESC LIMIT 30"); 

$yynq = mysql_query("SELECT * FROM noteshare_notes WHERE subject='$subject' AND level='$level' ORDER BY helpful DESC LIMIT 30"); 
+0

啊,干杯西蒙 - 这又一个小小的改正似乎这样做: ) 非常非常感谢你! – unicornication 2012-02-19 12:53:46

+0

当它是一个简单的答案时它总是很好诶;):) – 2012-02-19 13:00:18

+0

非常;)15char。虽然我认为'xchar'反对SO TOS,所以,嗨:D – unicornication 2012-02-26 09:09:03