我正在开发一个用于教育用途的网站,当我尝试构建一个有逻辑的文件时,我遇到了一些错误。
基本上,代码是为了获得3个数据值,如果只存在第一位数据,则运行x查询,如果第一个和第二个存在则运行y查询,依此类推,直到它对GET数据运行8次测试。对于一些背景信息,level =一类学习水平(IGCSE,IB,A-Levels),Subject是一门学科(数学,英语,科学),学校是学校的名称。
数据库结构如下:
'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 :(得分:1)
尝试这两个。你在陌生的地方有单引号。在$ school之后你没有单引号,并且在两种情况下都是在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");